###概要
CordovaをMonacaで使っております。
音声を文字へ変換したく、cordova-plugin-speechrecognitionを使ってAndroid8.0.0で音声認識を行おうとしてます。
下記URLが丁寧に書いてあったので、これを使い実装したいと考えましたが、うまくいきません。
https://qiita.com/r-hashioka/items/70c3d7e8088e4923c2cc
詳しい方、教えていただけないでしょうか。。?
###問題
下のほうに示した全体のコードを実行すると、実機でデバッグしたときにこの部分が実行されてしまいます。
JavaScript
1// 音声入力失敗時のコールバックメソッド 256.function micError(result) { 357. // エラーメッセージを出力 458. alert("mic error : " + result) ; 559.}
resultには、permission errorという文字列が表示されます。
コードの全体は下記のように実装しています。
JavaScript
10. function setup_recognition(){ 21. // プラグインの音声入力が可能かどうか判定 32. window.plugins.speechRecognition.isRecognitionAvailable( 43. function(available) { 54. if(available){ 65. // 利用可能なら、マイク使用の許可を求める。 76. window.plugins.speechRecognition.requestPermission( 87. function(res) { 98. // 成功時、特に何もしない。 109. console.log("permission is changed!"); 1110.}, function(err){ 1211. // 失敗時、警告メッセージを出し、音声入力ボタンを非活性に。 13 console.error(err); 1413. alert("マイクに接続できませんでした。"); 15 $("#voice_input_btn").prop("disabled", false); //jquery使ってます。 1615. }); 17 } 1817. }, function(err){ 19 // 利用不可なら、警告メッセージを出し、音声入力ボタンを非活性に。 2019. console.error(err); 21 alert("音声入力プラグインが利用できません。"); 2221. $("#voice_input_btn").prop("disabled", false); //jquery使ってます。 23}); 2423.} 25 26 27// 音声入力用メソッド 2827.function inputVoice(){ 29 // 音声入力の事前設定 3029. var micOptions = { 31 language : "ja-JP", // 言語は日本語 3231. matches : 1 // 結果の候補数 33 } 34 35 // 音声入力 開始 3635. if(monaca.isAndroid) { 37 // Android の場合は startListening を呼ぶだけ。 3837. window.plugins.speechRecognition.startListening( micSuccess, micError, micOptions ); 39 } else if(monaca.isIOS) { 4039. // iOS の場合は startListening の後、stopListening を呼ぶ必要有。 41 // ダイアログを立ち上げ、ダイアログ上で OK を押すと、対象のフィールドに値を書き込む。 4241. showIosVoiceDialog(micOptions); 43 } else { 4443. // 非対応 OS の場合はメッセージを出す。 45 alert("音声入力は Android もしくは iOS のみの対応となっております。") 4645. } 47} 48 49// 音声入力成功時のコールバックメソッド 50function micSuccess(result){ 5151. // テキストインプットに結果を出力 52 $("#searchword").val(result) ; //jquery使ってます。 5353.} 54 55// 音声入力失敗時のコールバックメソッド 5656.function micError(result) { 5757. // エラーメッセージを出力 5858. alert("mic error : " + result) ; 5959.} 60 61function showIosVoiceDialog(micOptions) { 62 // 音声入力開始 63 window.plugins.speechRecognition.startListening( micSuccess, micError, micOptions ); 64 65 // 音声入力中のダイアログを表示する。 66 ons.notification.confirm({ 67 messageHTML: '<div style="text-align:center"><ons-icon icon="fa-microphone" size="30px" /><br><span style="font-size:14px">音声入力中...</span></div>', 68 title: '', 69 primaryButtonIndex: 1, 70 cancelable: false, 71 modifier: 'material', 72 callback: function(index) { 73 switch(index) { 74 case 1: 75 //OKを押した時、音声入力終了 76 window.plugins.speechRecognition.stopListening(); 77 break; 78 case 0: 79 // Cancelを押した時の処理 80 // MEMO:中断したいけど、中断メソッドがプラグインに用意されていない模様 81 window.plugins.speechRecognition.stopListening(); 82 break; 83 } 84 } 85 }); 86} 87 88 89 90 91function init() { 92 document.addEventListener("deviceready", setup_recognition, true); 93} 94
###行ったこと
errの内容はpermission errorと表示されるので、マイクへの接続の問題かと思い、
cordova-plugin-media-capture
cordova-plugin-media
を入れましたが、状況はかわかりません
###質問
permission errorというのがなんのpermissionなのか、なにをすればよいのか途方に暮れています。
お分かりになる方、教えていただけないでしょうか。
Gitのページは下記です。
https://github.com/pbakondy/cordova-plugin-speechrecognition
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/09 09:44