2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Flutter] Speech to Textの使い方。

Last updated at Posted at 2023-04-10

はじめに

FlutterのSpeech to Textを使用する流れを、簡単にまとめておきます。

やること

1.マイクボタンの作成
2.ios(Info.plist), Android(AndroidManifest.xml)に 音声認識とマイクを許可するようにコードを追加
3.iosの場合、マイクボタンを押した時のサウンドがないので追加(pubspec.yamlのassets以下に音声データのパスを追記)
4.各音声メソッドの初期化など

実装例

1.マイクボタンの作成

sample1.dart
floatingActionButton: FloatingActionButton(
    // マイクボタンを押した時、音声認識をスタートさせる
    onPressed: () async {
      if (await speechToText.hasPermission && speechToText.isNotListening) {
        await startListening();
      } else if (speechToText.isListening) {
        await stopListening();
      } else {
        initSpeechToText();
      }
    },
    child: Icon(Icons.mic),
  ),

2.ios(Info.plist), Android(AndroidManifest.xml)に 音声認識とマイクを許可するようにコードを追加。

Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- 音声とマイクの許可のため、以下の4行を追加 -->
    <key>NSSpeechRecognitionUsageDescription</key>
    <string>For use sound input with ChatGPT</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>For use sount input with ChatGPT</string>
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.takuya.voistant.voistant">
    <!-- 音声とマイクの許可 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
    <!-- AndroidSDKを30以降にしている場合、以下のqueries句を追加する必要がある。 -->
    <queries>
    <intent>
        <action android:name="android.speech.RecognitionService" />
    </intent>
    </queries>

3.iosの場合、マイクボタンを押した時のサウンドがないので、追加してやる。(pubspec.yamlのassets以下に音声データのパスを追記)
※ 音声データは以下のリンクから

pabspec.yaml
assets:
  - assets/sounds/

4.各音声メソッドの初期化など

sample2.dart
class _HomePageState extends State<HomePage> {
  // 音声入力の設定
  final speechToText = SpeechToText();
  String lastWords = "";

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    initSpeechToText();
  }

  Future<void> initSpeechToText() async {
    await speechToText.initialize();
    setState(() {});
  }

  /// Each time to start a speech recognition session
  Future<void> startListening() async {
    await speechToText.listen(onResult: onSpeechResult);
    setState(() {});
  }

  Future<void> stopListening() async {
    await speechToText.stop();
    setState(() {});
  }

  void onSpeechResult(SpeechRecognitionResult result) {
    setState(() {
      lastWords = result.recognizedWords;
    });
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    speechToText.stop();
  }

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?