Flutter如何实现文字转语音
在Flutter中如何实现文字转语音功能?有没有推荐的插件或库?具体实现步骤是什么?需要注意哪些兼容性问题?希望能提供一个简单的代码示例。
2 回复
在Flutter中实现文字转语音,可以使用官方推荐的flutter_tts插件,步骤如下:
-
添加依赖:在
pubspec.yaml中添加flutter_tts: ^3.8.3(版本可能更新)。 -
初始化与基本使用:
import 'package:flutter_tts/flutter_tts.dart'; FlutterTts flutterTts = FlutterTts(); // 设置语言和语速 await flutterTts.setLanguage("zh-CN"); await flutterTts.setSpeechRate(0.5); // 朗读文本 await flutterTts.speak("你好,世界!"); -
常用功能:
- 调节音量:
setVolume(0.8) - 设置音调:
setPitch(1.0) - 停止朗读:
stop()
- 调节音量:
-
注意事项:
- Android需在
AndroidManifest.xml添加网络权限(部分在线引擎需要)。 - iOS无需额外配置。
- Android需在
简单几行代码即可让App“开口说话”,适合播报提示或无障碍功能。
更多关于Flutter如何实现文字转语音的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现文字转语音(TTS)功能,可以使用官方推荐的 flutter_tts 插件。以下是详细步骤和示例代码:
步骤1:添加依赖
在 pubspec.yaml 文件中添加依赖:
dependencies:
flutter_tts: ^3.8.3
运行 flutter pub get 安装插件。
步骤2:配置权限(仅Android)
在 android/app/src/main/AndroidManifest.xml 中添加网络权限(部分在线引擎需要):
<uses-permission android:name="android.permission.INTERNET" />
步骤3:实现代码
import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';
class TtsPage extends StatefulWidget {
@override
_TtsPageState createState() => _TtsPageState();
}
class _TtsPageState extends State<TtsPage> {
FlutterTts flutterTts = FlutterTts();
TextEditingController textController = TextEditingController();
@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(textController.text);
}
// 停止语音
_stop() async {
await flutterTts.stop();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('文字转语音')),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
children: [
TextField(
controller: textController,
decoration: InputDecoration(
hintText: '请输入要转换的文字',
border: OutlineInputBorder()
),
maxLines: 3,
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: _speak,
child: Text('播放'),
),
ElevatedButton(
onPressed: _stop,
child: Text('停止'),
),
],
)
],
),
),
);
}
}
关键功能说明:
- 语言设置:使用
setLanguage()设置语言代码(如中文:“zh-CN”)。 - 语音参数:
setSpeechRate():语速(0.0~1.0)setVolume():音量(0.0~1.0)setPitch():音调(0.5~2.0)
- 平台差异:
- Android 默认使用引擎的语音数据,可能需要下载语音包
- iOS 自动使用系统语音
注意事项:
- 首次使用可能需要用户授权语音权限(iOS会自动弹出请求)
- 测试时请使用真机,模拟器可能无法正常播放
- 可通过
flutter_tts的getLanguages方法获取设备支持的语言列表
通过以上代码即可快速实现基础的TTS功能,可根据需求进一步扩展语音队列、播放状态监听等功能。

