Flutter如何实现语音转文字功能
在Flutter中如何实现语音转文字的功能?有没有推荐的插件或库?具体实现步骤是怎样的?希望有大佬能分享一下经验,最好能附带代码示例,非常感谢!
2 回复
Flutter可通过插件实现语音转文字,推荐使用speech_to_text插件。步骤如下:
- 添加依赖到
pubspec.yaml。 - 请求麦克风权限。
- 初始化插件并监听语音识别结果。
- 调用
listen()开始识别,语音实时转换为文字。
更多关于Flutter如何实现语音转文字功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现语音转文字功能,可以使用speech_to_text插件。以下是实现步骤:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
speech_to_text: ^6.6.0
运行 flutter pub get
2. 基本实现代码
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 = '点击按钮开始语音识别';
@override
void initState() {
super.initState();
_initSpeech();
}
void _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('语音识别不可用')),
);
}
}
void _listen() async {
if (!_isListening) {
bool available = await _speech.listen(
onResult: (result) => setState(() {
_text = result.recognizedWords;
}),
localeId: 'zh_CN', // 中文识别
);
if (available) {
setState(() => _isListening = true);
}
} else {
_speech.stop();
setState(() => _isListening = false);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('语音转文字')),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
children: [
Expanded(
child: Container(
padding: EdgeInsets.all(16),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(8),
),
child: Text(_text),
),
),
SizedBox(height: 20),
FloatingActionButton(
onPressed: _listen,
child: Icon(_isListening ? Icons.mic : Icons.mic_none),
),
],
),
),
);
}
}
3. 关键配置说明
- 初始化:调用
initialize()检查设备支持情况 - 语言设置:通过
localeId参数设置识别语言(中文用zh_CN) - 权限处理:需要添加录音权限
- Android: 在
AndroidManifest.xml添加:<uses-permission android:name="android.permission.RECORD_AUDIO" /> - iOS: 在
Info.plist添加:<key>NSMicrophoneUsageDescription</key> <string>需要麦克风权限进行语音识别</string>
- Android: 在
4. 注意事项
- 真机测试:需要在真实设备上测试,模拟器可能无法使用
- 网络依赖:部分功能需要网络连接(云端识别)
- 错误处理:妥善处理权限拒绝和设备不支持的情况
这个实现提供了基本的语音识别功能,可以根据需要扩展错误处理、语音波形显示等高级功能。

