问题的关键在于IBM Watson Speech to Text仅允许上传FLAC,WAV和OGG文件格式并与API一起使用。
我的解决方案是,如果用户上传了一个mp3,那么在将文件发送给Watson之前,就会发生数据转换。基本上,用户上传一个mp3,然后使用ffmpeg或sox将音频转换为OGG,然后将音频上传到Watson。
我不确定的是:我究竟需要在Node.js Watson代码中修改什么才能进行音频转换?下面链接的是Watson回购,这是我正在进行的工作。我确信必须更改的文件是fileupload.js,我已将其链接,但更改的位置是我不确定的内容?
我已经浏览了SO和developerWorks,IBM SO以获得这个问题的答案,但我还没有看到任何我在这里发帖的原因。如果有必要,我很乐意澄清我的问题。
答案 0 :(得分:2)
您尝试使用的Speech to Text示例应用程序不会将MP3文件转换为OGG。 src
文件夹(上面有fileupload.js
)只是javascript,将在客户端使用(感谢Browserify)。
应用程序基本上是使用CORS与API通信,因此音频从浏览器转到Watson API。
如果要使用ffmpeg
或sox
转换音频,则需要使用自定义buildpack安装依赖项,因为这些模块具有二进制依赖关系(其中包含C ++代码)
James Thomas有一个带有sox的buildpack:https://github.com/jthomas/nodejs-buildpack。
您需要将manifest.yml
更新为:
memory: 256M
buildpack: https://github.com/jthomas/nodejs-buildpack.git
command: npm start
节点:
var sox = require('sox');
var job = sox.transcode('audio.mp3', 'audio.ogg', {
sampleRate: 16000,
format: 'ogg',
channelCount: 2,
bitRate: 192 * 1024,
compressionQuality: -1
});