Node.js Web应用程序上的IBM Watson语音到文本音频转换

Node.js Web应用程序上的IBM Watson语音到文本音频转换,node.js,audio,ffmpeg,speech-to-text,ibm-watson,Node.js,Audio,Ffmpeg,Speech To Text,Ibm Watson,问题的要点是IBMWatson语音到文本只允许上传FLAC、WAV和OGG文件格式并与API一起使用 我的解决方案是,如果用户在将文件发送给Watson之前上传mp3,就会进行数据转换。基本上,用户上传mp3,然后使用ffmpeg或sox将音频转换为OGG,然后将音频上传到Watson 我不确定的是:为了实现音频转换,我到底需要修改Node.js Watson代码中的哪些内容?下面链接的是沃森回购协议,这是我正在进行的工作。我确信必须更改的文件是,我已经链接了,但是更改的方向是我不确定的 我已经

问题的要点是IBMWatson语音到文本只允许上传FLAC、WAV和OGG文件格式并与API一起使用

我的解决方案是,如果用户在将文件发送给Watson之前上传mp3,就会进行数据转换。基本上,用户上传mp3,然后使用ffmpeg或sox将音频转换为OGG,然后将音频上传到Watson

我不确定的是:为了实现音频转换,我到底需要修改Node.js Watson代码中的哪些内容?下面链接的是沃森回购协议,这是我正在进行的工作。我确信必须更改的文件是,我已经链接了,但是更改的方向是我不确定的

我已经浏览了SO和developerWorks,以及IBMSO来寻找这个问题的答案,但是我没有看到任何答案,这就是我为什么要在这里发表文章的原因。如果有必要,我很乐意澄清我的问题

您尝试使用的示例应用程序不会将MP3文件转换为OGG。
src
文件夹(上面有
fileupload.js
)就是javascript,将在客户端使用(感谢Browserify)

应用程序基本上使用API与浏览器通信,因此音频从浏览器传输到Watson API


如果要使用
ffmpeg
sox
转换音频,则需要使用自定义构建包安装依赖项,因为这些模块具有二进制依赖项(其中包含C++代码) 詹姆斯·托马斯有一个关于sox的构建包:。 您需要将
manifest.yml
更新为如下内容:

memory: 256M 
buildpack: https://github.com/jthomas/nodejs-buildpack.git
command: npm start
节点:


接下来的问题是,我目前正在使用ffmpeg进行文件转换。但是这个音频转换库将整个音频文件加载到内存中,而不是分块加载。解决这个问题的好办法是什么?
var sox = require('sox');

var job = sox.transcode('audio.mp3', 'audio.ogg', {
  sampleRate: 16000,
  format: 'ogg',
  channelCount: 2,
  bitRate: 192 * 1024,
  compressionQuality: -1
});