我正在尝试构建一个语音日历应用,需要使用麦克风的实时流进行语音识别。
因此,您有一个开始收听麦克风的按钮,并在用户停止讲话时自动停止。
我已经探索过Cordova Media API,它允许我将数据记录到wav文件中。这有效,但由于我需要等待录制完成,因此这个过程非常缓慢。
我使用https://api.ai作为起点来构建应用程序的第一个版本,该版本运行良好。它照顾了所有“倾听”部分!
我的下一阶段是与几种不同的语音识别API集成。
对我来说,主要问题是缺乏原生开发技能,那么有没有可以帮助我做到这一点的cordova插件?
更新1 - 2016年4月1日
找到此https://subvisual.co/blog/posts/39-tutorial-html-audio-capture-streaming-to-node-js-no-browser-extensions 将试图通过webrtc在cordova中实现这一点。
更新2 - 2016年4月1日
已安装https://github.com/eface2face/cordova-plugin-iosrtc以使用webrtc
更新3 - 2016年4月2日
坚持AudioContext.createMediaStreamSource
不是iOS上的功能!
AudioContext.createMediaStreamSource alternative for iOS?
2016年4月4日至6日更新
Going Native - 学习iOS开发的时间!
答案 0 :(得分:9)
很抱歉听到您放弃了Cordova,但如果您仍然感兴趣:我已经为iOS和Android创建了一个cordova插件,可以捕获麦克风数据并将其转发到您的网络层应用。您可以依靠Web Audio API来处理传入的声音,也可以使用任何其他方式对原始声音数据进行编码和保存:
https://github.com/edimuj/cordova-plugin-audioinput
使用示例:
function onAudioInput( evt ) {
// 'evt.data' is an integer array containing raw audio data
console.log( "Audio data received: " + evt.data.length + " samples" );
// ... do something with the evt.data array ...
}
// Listen to audioinput events
window.addEventListener( "audioinput", onAudioInput, false );
// Start capturing audio from the microphone
audioinput.start();