質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

1152閲覧

Cordovaでの音声⇒文字変換ができない(cordova-plugin-speechrecognitionでAndroid)

s.Masaya

総合スコア13

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2019/04/07 22:19

編集2019/04/07 22:22

###概要
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

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

javascriptを使ったクロスプラットフォーム(おそらく)のandroid開発はあまり詳しくはないのですが・・・
音声認識関係のpermission errorならManifest.permission.RECORD_AUDIO permissionが原因なのではないでしょうか?

公式サイトに以下の一文がありました。
Please note that the application must have Manifest.permission.RECORD_AUDIO permission to use this class.

何をすればよいか

AndroidManifest.xmlにpermissionを記述すればいいかと思います。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RRECORD_AUDIO" />//これを追加する。 ... </manifest>

参考

投稿2019/04/08 04:57

編集2019/04/08 04:59
hood

総合スコア351

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.Masaya

2019/04/09 09:44

ご回答いただき、ありがとうございます。 ご指摘いただいた内容はまったく関知していなかったので、確認させていただきました。問題ないことを確認後、上のコードのようにonDeviceReadyイベントの前に関数を入れる前のコードをビルドしていたことに気がつきました。。お騒がせいたしました。でも大変勉強になりました! 今後ともよろしくお願いいたします。
guest

0

自己解決

上のコードのようにonDeviceReadyイベントの前に関数を入れる前のコードをビルドしていたことに気がつきました。。お騒がせいたしました。

投稿2019/04/09 09:47

s.Masaya

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問