有解码成PCM 过程吗?
想做一个分析声音频率的小程序,求助想做一个分析声音频率的小程序,我用wx.getRecorderManager()录制声音之后在 onFrameRecorded事件中取得frameBuffer,但是不知道怎么根据frameBuffer获得声音的频率,有了解的朋友吗
2018-11-20@林超 onFrameRecorded 目前没有回调,希望后续版本中能设计成回调接口是直接的 PCM 数据,而不是编码后的数据,否则在实时处理的时候还要额外转码一次~
反馈一点开发者工具以及1.6基础库的问题主要录音这方面的问题: 1、开发者工具,普通录音的文件格式和手机的格式不一致,开发者工具录的是webm格式的,而手机录出来是slik格式的。导致开发的时候极其不方便! 2、最新的基础库加入了wx.getRecorderManager(),其中onFrameRecorded方法在开发者工具中不回调,也影响到了开发。 3、录音管理器的录音文件,调用wx.playVoice方法无法播放,提示播放失败,未指明确切原因,我这边录音的格式 是mp3格式 [图片]
2018-11-20强烈建议得到pcm 格式数据
录音管理接收 arraybuffer 音频流是否可增加 pcm 原始音频数据参数- 需求的场景描述(希望解决的问题) 在使用录音管理 getRecorderManager 时,因现在 format 只支持(aac/mp3),我们的小程序在使用 onFrameRecorded 获取 arraybuffer 的时候要对音频流进行处理,所以要用到 PCM 原始音频数据,但小程序只支持 ACC 和 MP3 这两种格式。 我们只能通过 MP3 解码的方式来得到 PCM 原始音频数据,但是这个过程,因为与浏览器不同没有提供相应的API,就只能自己使用 JavaScript 来实现 MP3 解码的动作。 当我们实现了使用 JavaScript 解码的时候,发现使用 JavaScript 版本的 MP3 解码 PCM 的速度慢于接收音频流的速度。这样就没办法在跑接下来的业务代码了。 - 希望提供 PCM 原始音频数据 在 onFrameRecorded 中的 format 提供 pcm 音频格式选项 - 测试数据,基于 iPhone 6s MP3 arraybuffer 解码 PCM [图片]
2018-11-20有解决办法吗?
录音 onFrameRecorded 的回调数据没有详细说明基础库版本:1.6.4 测试手机:iPhone 5s、iPhone 6s plus(均为 iOS 11.1) 运行 RecorderManager 的示例程序,并直接输出 onFrameRecorded 回调的数据,结果 frameBuffer 为 null。还尝试了将 frameBuffer 转换成 base64 和十六进制,但不知道数据的格式。 [代码]recorderManager.onFrameRecorded([代码][代码]function[代码] [代码](cb) {[代码][代码] [代码][代码]console.log(cb) [代码][代码]// 有 frameBuffer 和 isLastFrame 两个属性[代码][代码] [代码][代码]console.log(cb.frameBuffer) [代码][代码]// -> null[代码] [代码] [代码][代码]// base64 -> //v1ZAAD+YSCw8Nv …[代码][代码] [代码][代码]const base64 = wx.arrayBufferToBase64(frameBuffer)[代码] [代码] [代码][代码]// hex -> fffbe2640000f9e2 …[代码][代码] [代码][代码]const hex = Array.prototype.map.call([代码][代码]new[代码] [代码]Uint8Array(frameBuffer), x => ([代码][代码]'00'[代码] [代码]+ x.toString(16)).slice(-2)).join([代码][代码]''[代码][代码]);[代码] [代码] [代码] [代码]})[代码] 能够实时获取麦克风的 raw data 是语音处理的第一步,所以想问现在是否有办法正确解码,或者后续会开放?目前我将录音的 mp3 文件上传到服务器是能正常播放的,但是这样做不到实时处理。 也有一些相似的问题:#、##。
2018-11-20