課題
下記リファレンスを参考にspeech_to_text でマイクから音声を拾って文章に文字起こしをしたいがうまく作動しない。
下記のようなコードを組んで問題点を調査したところ"The user has denied the use of speech recognition."が呼ばれた。どうやらspeech_to_textをインスタンス化するところで失敗している模様。
var hasSpeech = await speech.initialize(
onError: errorListener,
onStatus: statusListener,
debugLogging: true,
finalTimeout: Duration(milliseconds: 0));
if (hasSpeech) {
_localeNames = await speech.locales();
print('_localeNames');
print(_localeNames);
var systemLocale = await speech.systemLocale();
_currentLocaleId = systemLocale.localeId;
speech.listen( onResult: resultListener );
} else {
print("The user has denied the use of speech recognition.");
}
#解決策
app/src/main の Android Manifest に uses-permissionのタグ二つとqueriesを追加する。
これによってアプリ起動時にマイクへのアクセスが求められる様になり、音声入力が可能となる。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.higuuu.job_interview">
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>