科尔多瓦|从iOS上的麦克风获取直播

时间:2016-04-01 16:10:01

标签: ios cordova audio dialogflow

我正在尝试构建一个语音日历应用,需要使用麦克风的实时流进行语音识别。

因此,您有一个开始收听麦克风的按钮,并在用户停止讲话时自动停止。

我已经探索过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开发的时间!

1 个答案:

答案 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();