flutter如何将文本合成语音文件

在Flutter中如何将文本合成为语音并保存为音频文件?需要用到哪些插件或库?希望能提供一个完整的实现示例,包括权限申请和文件保存的步骤。

2 回复

使用Flutter的flutter_tts库,调用speak()方法播放语音,synthesizeToFile()方法将文本保存为音频文件。支持设置语言、语速和音调。

更多关于flutter如何将文本合成语音文件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中将文本合成语音文件,可以使用 flutter_ttstext_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_soundaudioplayers播放生成的音频文件
  • 添加语言选择、语速调节等UI控件

这是最简洁的实现方案,实际使用时建议添加错误处理和加载状态提示。

回到顶部