支持的语音
ja-JP, el-GR, en-AU, ar-SA, hu-HU, sv-SE, zh-CN, fr-CA, en-US, it-IT, ro-RO, sk-SK, ko-KR, en-IE, zh-HK, fr-FR, nl-NL, id-ID, pt-BR, pt-PT, cs-CZ, en-GB, de-DE, da-DK, es-ES, pl-PL, ru-RU, zh-TW, es-MX, en-ZA, hi-IN, en-IN, th-TH, no-NO, tr-TR, fi-FI, nl-BE, he-IL
安装依赖
1 2
| dependencies: flutter_tts: ^3.6.3
|
执行flutter pub get
Windows环境需要在设置中开启开发者模式,不然会报错。
仓库地址:flutter_tts
配置
在文件中将最低 Android sdk 版本更改为 21(或更高)android/app/build.gradle
Android 配置
Android 11使用文本语音转换的应用程序应该在其清单的查询元素中声明 TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE
在<manifest>
标签和<application>
标签之间添加如下配置
1 2 3 4 5 6 7 8 9 10
| <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/> <queries> <intent> <action android:name="android.speech.RecognitionService"/> </intent> </queries>
|
IOS没试 按照官方文档配置即可
简单使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import 'package:flutter_tts/flutter_tts.dart';
FlutterTts flutterTts = FlutterTts(); try { await flutterTts.setLanguage("zh-CN"); await flutterTts.setVolume(1); await flutterTts.setSpeechRate(0.6); await flutterTts.setPitch(0.4); await flutterTts.isLanguageAvailable("zh-CN"); flutterTts.speak("测试TTS功能"); print('tts初始化'); } catch (e) { print("Failed to initialize TTS: $e"); }
|
封装一个简单的工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| import 'package:flutter_tts/flutter_tts.dart';
class TTSUtil { TTSUtil._();
static final TTSUtil _manager = TTSUtil._();
factory TTSUtil() { return _manager; }
late FlutterTts flutterTts;
void initTTS() { flutterTts = FlutterTts(); }
Future<void> speak(String text) async { await flutterTts.setLanguage("zh-CN");
await flutterTts.setVolume(0.8);
await flutterTts.setSpeechRate(0.5);
await flutterTts.setPitch(1.0);
if (text.isNotEmpty) { await flutterTts.speak(text); } }
Future<void> pause() async { await flutterTts.pause(); }
Future<void> stop() async { await flutterTts.stop(); } }
|
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import 'package:tts_demo/utils/ttsUtil.dart';
class _WelcomePageState extends State<WelcomePage> { late TTSUtil _ttsUtil; @override void initState() { super.initState(); initTTS(); } void initTTS() { _ttsUtil = TTSUtil(); _ttsUtil.initTTS(); }
onPressed: () { _ttsUtil.stop(); _ttsUtil.speak('这是一段测试语音'); },
}
|
目前暂时不需要其他的功能,后续有需要再进行补充。