Flutter如何实现Android语音识别
在Flutter中如何实现Android平台的语音识别功能?需要集成哪些插件或SDK?能否提供具体的代码示例和配置步骤?另外,如何处理权限申请和语音识别的回调结果?
2 回复
使用Flutter实现Android语音识别,可通过speech_to_text插件。步骤如下:
- 添加依赖:在
pubspec.yaml中添加speech_to_text: ^6.6.0。 - 请求权限:在
AndroidManifest.xml中添加录音权限。 - 初始化并监听语音输入,调用
listen()开始识别,stop()结束。
示例代码:
SpeechToText speech = SpeechToText();
bool available = await speech.initialize();
if (available) {
speech.listen(onResult: (result) {
print(result.recognizedWords);
});
}
更多关于Flutter如何实现Android语音识别的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现Android语音识别,可以使用speech_to_text插件。以下是实现步骤:
1. 添加依赖
在pubspec.yaml中添加:
dependencies:
speech_to_text: ^6.6.0
2. 配置权限
在android/app/src/main/AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
3. 基本实现代码
import 'package:flutter/material.dart';
import 'package:speech_to_text/speech_to_text.dart' as stt;
class SpeechScreen extends StatefulWidget {
@override
_SpeechScreenState createState() => _SpeechScreenState();
}
class _SpeechScreenState extends State<SpeechScreen> {
stt.SpeechToText _speech = stt.SpeechToText();
bool _isListening = false;
String _text = 'Press button and start speaking';
@override
void initState() {
super.initState();
_initSpeech();
}
_initSpeech() async {
bool available = await _speech.initialize(
onStatus: (status) => print('Status: $status'),
onError: (error) => print('Error: $error'),
);
if (!available) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('语音识别不可用')),
);
}
}
_listen() async {
if (!_isListening) {
bool available = await _speech.initialize(
onStatus: (status) => print('Status: $status'),
onError: (error) => print('Error: $error'),
);
if (available) {
setState(() => _isListening = true);
_speech.listen(
onResult: (result) => setState(() {
_text = result.recognizedWords;
}),
localeId: 'zh-CN', // 中文识别
);
}
} else {
setState(() => _isListening = false);
_speech.stop();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('语音识别')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_text, style: TextStyle(fontSize: 20)),
SizedBox(height: 20),
ElevatedButton(
onPressed: _listen,
child: Text(_isListening ? '停止录音' : '开始录音'),
),
],
),
),
);
}
}
4. 关键说明
- 初始化:调用
initialize()检查设备支持情况 - 监听控制:
listen()开始识别,stop()停止识别 - 语言设置:通过
localeId参数设置识别语言(如:'zh-CN’中文,'en-US’英文) - 权限处理:首次使用会自动请求录音权限
5. 扩展功能
- 实时显示识别置信度:
result.confidence - 处理部分结果:
listen()设置partialResults: true - 错误处理:在
onError回调中处理识别错误
这个方案支持离线识别(需设备支持),兼容Android 5.0+,可识别多种语言。

