Flutter中如何使用flutter_tts: ^4.2.3实现语音合成
在Flutter项目中集成了flutter_tts: ^4.2.3插件,但遇到几个问题想请教:
- 初始化时报
PlatformException错误,如何正确配置Android/iOS的权限? - 调用
speak()方法时部分中文文本无法合成,是否需要特殊编码处理? - 如何动态调整语速和音调?文档中的
setSpeechRate似乎不生效。 - 播放过程中突然中断(如来电),如何实现自动恢复播放?
环境:Flutter 3.19,插件版本严格锁定4.2.3。希望能提供关键代码示例和常见坑的解决方案。
2 回复
在Flutter中使用flutter_tts 4.2.3实现语音合成:
- 添加依赖到pubspec.yaml:
dependencies:
flutter_tts: ^4.2.3
- 基本使用:
final flutterTts = FlutterTts();
await flutterTts.setLanguage("zh-CN");
await flutterTts.speak("你好,世界");
- 常用方法:
- setLanguage() 设置语言
- setSpeechRate() 设置语速
- setVolume() 设置音量
- stop() 停止播放
记得在AndroidManifest.xml中添加网络权限(如果需要在线合成)。
更多关于Flutter中如何使用flutter_tts: ^4.2.3实现语音合成的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用flutter_tts: ^4.2.3实现语音合成,步骤如下:
1. 添加依赖
在 pubspec.yaml 文件中添加:
dependencies:
flutter_tts: ^4.2.3
运行 flutter pub get 安装。
2. 基本使用代码
import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';
class TtsExample extends StatefulWidget {
@override
_TtsExampleState createState() => _TtsExampleState();
}
class _TtsExampleState extends State<TtsExample> {
final FlutterTts flutterTts = FlutterTts();
String text = "你好,这是一个语音合成示例";
@override
void initState() {
super.initState();
_initTts();
}
// 初始化TTS设置
_initTts() async {
await flutterTts.setLanguage("zh-CN"); // 设置中文
await flutterTts.setSpeechRate(0.5); // 语速 0.0~1.0
await flutterTts.setVolume(1.0); // 音量 0.0~1.0
await flutterTts.setPitch(1.0); // 音调 0.5~2.0
}
// 语音合成
_speak() async {
await flutterTts.speak(text);
}
// 停止播放
_stop() async {
await flutterTts.stop();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('TTS示例')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
onChanged: (value) => text = value,
decoration: InputDecoration(
hintText: "请输入要合成的文本",
border: OutlineInputBorder(),
),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _speak,
child: Text('播放'),
),
SizedBox(width: 20),
ElevatedButton(
onPressed: _stop,
child: Text('停止'),
),
],
),
],
),
),
);
}
}
3. 关键功能说明
- 语言设置:使用
setLanguage()方法,支持多种语言代码(如 “en-US”、“zh-CN”) - 语速控制:
setSpeechRate()范围 0.0~1.0 - 音量调节:
setVolume()范围 0.0~1.0 - 音调调整:
setPitch()范围 0.5~2.0
4. 平台权限配置
Android:在 AndroidManifest.xml 中添加网络权限(部分语音引擎需要):
<uses-permission android:name="android.permission.INTERNET"/>
iOS:在 Info.plist 中添加语音识别权限:
<key>NSSpeechRecognitionUsageDescription</key>
<string>需要语音合成功能</string>
5. 其他常用方法
// 获取可用语言列表
List<dynamic> languages = await flutterTts.getLanguages;
// 监听播放完成
flutterTts.setCompletionHandler(() {
print("播放完成");
});
// 设置语音引擎(Android)
await flutterTts.setEngine("com.google.android.tts");
这样就完成了基本的语音合成功能实现。

