Cordova:有没有办法检测语音听写是不是在 iOS 上结束

Posted

技术标签:

【中文标题】Cordova:有没有办法检测语音听写是不是在 iOS 上结束【英文标题】:Cordova: Is there a way to detect whether Voice Dictation has ended on iOSCordova:有没有办法检测语音听写是否在 iOS 上结束 【发布时间】:2016-02-04 21:05:54 【问题描述】:

请注意,此问题适用于 Cordova/PhoneGap/Hybrid 应用。

我有一个<textarea>,我希望应用程序仅在语音听写输入结束时以某种方式运行——即用户选项卡“完成”。然而,事实证明这是相当困难的。

iosUIKitUITextInput 下提供dictationRecordingDidEnd 事件,但我不确定这是否可以在混合应用程序中使用。 (iOS 开发者库文档here)

编辑:我正在使用ionic-plugin-keyboard

任何想法将不胜感激。

【问题讨论】:

【参考方案1】:

也许您可以尝试使用SpeechRecognitionPlugin 或cordova-plugin-iflyspeech

对于cordova-plugin-iflyspeech,您有 13 个事件可以控制 iOS 设备中的语音控制,例如:

SpeechBegin
SpeechEnd
SpeechCancel
SpeechResults
SpeechError  
VolumeChanged

SpeakBegin
SpeakPaused
SpeakResumed
SpeakCancel
SpeakCompleted 
SpeakProgress
BufferProgress

并且支持多种语言,例如:英语(美国)、英语(英国)、法语、西班牙语、意大利语等。

这是一个文档示例

function onLoad() 
    document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() 
    $('div#status').html( 'speech engine ready' );

function startReading() 
    var text = $('textarea#read').val();
    navigator.speech.startSpeaking( text, voice_name: 'xiaoyan' );

function stopReading() 
    navigator.speech.stopSpeaking();

function startListening() 
    $('div#status').html( 'Listening, please speak.' );

    navigator.speech.startListening(language:'en-US' function(str) 
            // this is what the device hear and understand
            $('textarea#read').val( str );
        );

function stopListening() 
    navigator.speech.stopListening();

在这里您可以将 iOS 方法 dictationRecordingDidEnd 绑定到: stopListening();cancelListening(); 方法,具体取决于操作。

【讨论】:

我也会推荐 cordova-plugin-iflyspeech 插件。

以上是关于Cordova:有没有办法检测语音听写是不是在 iOS 上结束的主要内容,如果未能解决你的问题,请参考以下文章

ionic加载cordova科大讯飞语音输入法插件相关问题

在 iPad mini 中使用语音听写时 100% iPhone 应用程序崩溃

Microsoft 自定义语音服务缺少听写方案

语音听写就要用科大讯飞 语音听写都来尝试一下啊

如何检测用户在 iOS 中使用了语音输入?

Android讯飞语音云语音听写学习