Flutter文本转语音插件guj_tts的使用

Flutter文本转语音插件guj_tts的使用

开始使用

在Dart项目中添加插件:

dart pub add guj_tts
dart pub get

在Flutter项目中添加插件:

flutter pub add guj_tts
flutter pub get

如何使用

可以参考以下示例代码来了解如何使用guj_tts插件。该示例展示了如何将文本转换为语音并播放。

示例代码

import 'package:flutter/material.dart';
import 'package:guj_tts/guj_tts_base.dart';
import 'package:just_audio/just_audio.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _convertTextToSpeech() async {
    // 设置文件路径
    const path = "/storage/emulated/0/Download/example.flac";

    // 调用生成语音的方法
    await GujTTS.generate(
        accessToken: "", // 替换为你的访问令牌
        text: 'વરસાદ બન્યો વિલન:મોતના કૂવામાં પાણી રાજકોટના મેળામાં જળબંબાકારની સ્થિતિ, સ્ટોલ માલીકોને આવ્યો રડવાનો વારો',
        filePath: path);

    // 播放生成的语音文件
    AudioPlayer player = AudioPlayer();
    await player.setFilePath(path);
    await player.play();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: const Center(
        child: Text(
          '点击浮动操作按钮将文本转换为语音',
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _convertTextToSpeech,
        tooltip: 'Guj TTS',
        child: const Icon(Icons.speaker),
      ), // 这个逗号使自动格式化更美观
    );
  }
}

更多关于Flutter文本转语音插件guj_tts的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本转语音插件guj_tts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


guj_tts 是一个用于在 Flutter 应用中实现文本转语音(Text-to-Speech, TTS)功能的插件。它支持多种语言和语音引擎,并且可以自定义语音的音调、语速等参数。以下是如何在 Flutter 项目中使用 guj_tts 插件的详细步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 guj_tts 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  guj_tts: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 guj_tts 插件。

import 'package:guj_tts/guj_tts.dart';

3. 初始化 TTS

在使用 TTS 功能之前,通常需要初始化 TTS 引擎。

GujTts tts = GujTts();

4. 设置语言和语音参数

你可以设置 TTS 的语言、音调、语速等参数。

await tts.setLanguage("en-US");  // 设置语言为美式英语
await tts.setPitch(1.0);         // 设置音调
await tts.setSpeechRate(0.5);    // 设置语速

5. 播放文本

使用 speak 方法将文本转换为语音并播放。

await tts.speak("Hello, how are you?");

6. 停止语音

你可以使用 stop 方法来停止正在播放的语音。

await tts.stop();

7. 释放资源

当不再需要 TTS 功能时,可以释放相关资源。

await tts.shutdown();

8. 处理回调

你可以监听 TTS 的状态变化,例如开始、完成、错误等。

tts.setStartHandler(() {
  print("TTS started");
});

tts.setCompletionHandler(() {
  print("TTS completed");
});

tts.setErrorHandler((message) {
  print("TTS error: $message");
});

完整示例

以下是一个完整的示例,展示了如何使用 guj_tts 插件实现文本转语音功能。

import 'package:flutter/material.dart';
import 'package:guj_tts/guj_tts.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TtsDemo(),
    );
  }
}

class TtsDemo extends StatefulWidget {
  [@override](/user/override)
  _TtsDemoState createState() => _TtsDemoState();
}

class _TtsDemoState extends State<TtsDemo> {
  GujTts tts = GujTts();

  [@override](/user/override)
  void initState() {
    super.initState();
    _initTts();
  }

  Future<void> _initTts() async {
    await tts.setLanguage("en-US");
    await tts.setPitch(1.0);
    await tts.setSpeechRate(0.5);

    tts.setStartHandler(() {
      print("TTS started");
    });

    tts.setCompletionHandler(() {
      print("TTS completed");
    });

    tts.setErrorHandler((message) {
      print("TTS error: $message");
    });
  }

  Future<void> _speak() async {
    await tts.speak("Hello, how are you?");
  }

  Future<void> _stop() async {
    await tts.stop();
  }

  [@override](/user/override)
  void dispose() {
    tts.shutdown();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Text-to-Speech Demo"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _speak,
              child: Text("Speak"),
            ),
            ElevatedButton(
              onPressed: _stop,
              child: Text("Stop"),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部