Flutterで音声認識・音声再生を実装する方法まとめ【初心者向けガイド】
生徒
「Flutterでスマホに話しかけた内容をテキストにして、さらに音声として再生する機能って作れますか?」
先生
「もちろん可能です。Flutterには音声認識(Speech to Text)や音声再生(Text to Speech)をサポートするパッケージが揃っていますよ。」
生徒
「それって、どんなパッケージを使って、どうやって実装するんですか?」
先生
「では、音声認識と音声再生の両方をFlutterで実装する基本的な流れを順に見ていきましょう。」
1. Flutterで音声認識を使うには?
Flutterで音声認識(Speech to Text)を実現するには、speech_to_textパッケージを使用します。このパッケージはユーザーの音声をテキストに変換してくれます。
まずはpubspec.yamlに以下の依存関係を追加します。
dependencies:
flutter:
sdk: flutter
speech_to_text: ^6.1.0
次に、音声認識の初期化・開始・停止の基本的なコードを見てみましょう。
import 'package:speech_to_text/speech_to_text.dart' as stt;
class SpeechRecognition {
late stt.SpeechToText _speech;
bool _isListening = false;
String _text = '';
void initSpeech() async {
_speech = stt.SpeechToText();
await _speech.initialize();
}
void startListening() async {
_isListening = true;
_speech.listen(onResult: (result) {
_text = result.recognizedWords;
});
}
void stopListening() {
_isListening = false;
_speech.stop();
}
}
音声認識を使うにはマイクのパーミッション許可が必要です。Androidの場合はAndroidManifest.xmlに以下を追加します。
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
2. Flutterで音声再生(Text to Speech)を実装するには?
音声再生(Text to Speech)には、flutter_ttsパッケージを使います。このパッケージは、指定したテキストを音声に変換して読み上げる機能を提供します。
pubspec.yamlに以下を追加します。
dependencies:
flutter_tts: ^3.6.3
Text to Speechの基本的な使用例は次の通りです。
import 'package:flutter_tts/flutter_tts.dart';
class TextToSpeech {
final FlutterTts _flutterTts = FlutterTts();
Future<void> speak(String text) async {
await _flutterTts.setLanguage("ja-JP");
await _flutterTts.setPitch(1.0);
await _flutterTts.speak(text);
}
Future<void> stop() async {
await _flutterTts.stop();
}
}
このようにすれば、ユーザーの話した内容をテキスト化し、それを音声で再生するアプリを構築できます。
3. 音声認識と音声再生を連携させる
音声認識した結果をそのまま音声再生に渡すことで、話した内容をそのまま返すアプリが作れます。以下は連携の簡易的な例です。
class VoiceAssistant {
final SpeechRecognition speech = SpeechRecognition();
final TextToSpeech tts = TextToSpeech();
void processVoice() async {
speech.initSpeech();
speech.startListening();
await Future.delayed(Duration(seconds: 5));
speech.stopListening();
await tts.speak(speech._text);
}
}
このコードでは、5秒間ユーザーの音声を聞き取り、その内容を自動的に読み上げています。
Flutterを「実務レベル」で使えるようになりたい人や、 iPhone / Android両対応アプリ開発の流れをまとめて学びたい人には、 定番の実践書がこちらです。
Flutter実践開発をAmazonで見る※ Amazon広告リンク
4. UIへの組み込みと状態管理
実際にFlutterアプリに組み込むには、StatefulWidgetを使ってボタンを配置し、マイクボタンを押すと録音開始、テキスト表示、再生ボタンで読み上げ、というようなインターフェースにします。
また、音声認識のステータス(開始中・録音中・停止中)などをユーザーに分かりやすく表示することがUX上非常に重要です。
5. 実機デバイスでのテストに注意
音声系の機能は、FlutterのエミュレータやiOSのシミュレータでは正常に動作しないことがあります。必ず実機デバイスでテストを行いましょう。
また、iOSの場合はInfo.plistにマイクと音声合成の使用許可を明記する必要があります。
<key>NSMicrophoneUsageDescription</key>
<string>音声認識のためにマイクを使用します。</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>音声認識を使用します。</string>
6. 音声認識と音声再生の活用例
Flutterの音声認識・再生機能は以下のようなアプリに活用できます。
- 音声アシスタントアプリ
- 読み上げ付き日記アプリ
- 高齢者向け音声操作アプリ
- 言語学習用の聞き取り・発音練習アプリ
アイデア次第で、音声の入出力機能はFlutterアプリに非常に大きな価値を加えてくれます。