flutter如何将文本合成语音文件
在Flutter中如何将文本合成为语音并保存为音频文件?需要用到哪些插件或库?希望能提供一个完整的实现示例,包括权限申请和文件保存的步骤。
2 回复
使用Flutter的flutter_tts库,调用speak()方法播放语音,synthesizeToFile()方法将文本保存为音频文件。支持设置语言、语速和音调。
更多关于flutter如何将文本合成语音文件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中将文本合成语音文件,可以使用 flutter_tts 或 text_to_speech 插件。以下是使用 flutter_tts 的步骤:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
flutter_tts: ^3.8.3
运行 flutter pub get。
2. 基本代码示例
import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';
class TextToSpeechExample extends StatefulWidget {
@override
_TextToSpeechExampleState createState() => _TextToSpeechExampleState();
}
class _TextToSpeechExampleState extends State<TextToSpeechExample> {
final FlutterTts flutterTts = FlutterTts();
final String text = "你好,这是测试文本";
@override
void initState() {
super.initState();
_initTts();
}
// 初始化TTS设置
void _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
}
// 合成语音并保存为文件
Future<void> _synthesizeToFile() async {
String? filePath = await flutterTts.synthesizeToFile(
text,
"tts_audio.wav", // 文件名(默认保存在应用文档目录)
);
if (filePath != null) {
print("语音文件保存路径: $filePath");
// 可以在这里添加文件操作(如分享、上传等)
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: _synthesizeToFile,
child: Text("生成语音文件"),
),
),
);
}
}
3. 关键说明
- 平台支持:Android/iOS 均支持文件输出,但部分Android设备可能需要额外配置
- 文件格式:Android默认生成WAV,iOS生成CAF
- 文件位置:默认保存在应用文档目录(可通过path_provider获取路径)
- 权限要求:Android需要
WRITE_EXTERNAL_STORAGE权限(仅Android 10以下)
4. 扩展功能
- 使用
path_provider获取可访问的文件路径 - 通过
flutter_sound或audioplayers播放生成的音频文件 - 添加语言选择、语速调节等UI控件
这是最简洁的实现方案,实际使用时建议添加错误处理和加载状态提示。

