Flutter如何实现文字转语音

在Flutter中如何实现文字转语音功能?有没有推荐的插件或库?具体实现步骤是什么?需要注意哪些兼容性问题?希望能提供一个简单的代码示例。

2 回复

在Flutter中实现文字转语音,可以使用官方推荐的flutter_tts插件,步骤如下:

  1. 添加依赖:在pubspec.yaml中添加flutter_tts: ^3.8.3(版本可能更新)。

  2. 初始化与基本使用

    import 'package:flutter_tts/flutter_tts.dart';
    
    FlutterTts flutterTts = FlutterTts();
    
    // 设置语言和语速
    await flutterTts.setLanguage("zh-CN");
    await flutterTts.setSpeechRate(0.5);
    
    // 朗读文本
    await flutterTts.speak("你好,世界!");
    
  3. 常用功能

    • 调节音量:setVolume(0.8)
    • 设置音调:setPitch(1.0)
    • 停止朗读:stop()
  4. 注意事项

    • Android需在AndroidManifest.xml添加网络权限(部分在线引擎需要)。
    • iOS无需额外配置。

简单几行代码即可让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('停止'),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

关键功能说明:

  1. 语言设置:使用 setLanguage() 设置语言代码(如中文:“zh-CN”)。
  2. 语音参数
    • setSpeechRate():语速(0.0~1.0)
    • setVolume():音量(0.0~1.0)
    • setPitch():音调(0.5~2.0)
  3. 平台差异
    • Android 默认使用引擎的语音数据,可能需要下载语音包
    • iOS 自动使用系统语音

注意事项:

  • 首次使用可能需要用户授权语音权限(iOS会自动弹出请求)
  • 测试时请使用真机,模拟器可能无法正常播放
  • 可通过 flutter_ttsgetLanguages 方法获取设备支持的语言列表

通过以上代码即可快速实现基础的TTS功能,可根据需求进一步扩展语音队列、播放状态监听等功能。

回到顶部