Flutter中如何使用flutter_tts: ^4.2.3实现语音合成

在Flutter项目中集成了flutter_tts: ^4.2.3插件,但遇到几个问题想请教:

  1. 初始化时报PlatformException错误,如何正确配置Android/iOS的权限?
  2. 调用speak()方法时部分中文文本无法合成,是否需要特殊编码处理?
  3. 如何动态调整语速和音调?文档中的setSpeechRate似乎不生效。
  4. 播放过程中突然中断(如来电),如何实现自动恢复播放?
    环境:Flutter 3.19,插件版本严格锁定4.2.3。希望能提供关键代码示例和常见坑的解决方案。
2 回复

在Flutter中使用flutter_tts 4.2.3实现语音合成:

  1. 添加依赖到pubspec.yaml:
dependencies:
  flutter_tts: ^4.2.3
  1. 基本使用:
final flutterTts = FlutterTts();
await flutterTts.setLanguage("zh-CN");
await flutterTts.speak("你好,世界");
  1. 常用方法:
  • 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");

这样就完成了基本的语音合成功能实现。

回到顶部