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

发布于 1周前 作者 sinazl 来自 Flutter

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

开始使用

在Dart项目中添加插件:

dart pub add yoruba_tts
dart pub get

在Flutter项目中添加插件:

flutter pub add yoruba_tts
flutter pub get

如何使用

你可以查看示例代码以获取更多用法信息。

以下是一个简单的示例代码:

void main() async {
  // 设置文件路径
  final path = "<file path to save speech .flac file>";
  final accessToken = "<Access token generated from Hugging Face Website>";
  final text = "Ẹ̀yà Yorùbá ni mo ti wá";
  YorubaTts.generate(accessToken: accessToken, text: text, filePath: path);
  // 对.flac文件进行播放、上传等操作
}

完整示例代码

import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'package:path_provider/path_provider.dart';
import 'package:yoruba_tts/yoruba_tts.dart';

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

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

  @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
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  void _convertTextToSpeech() async {

    // 获取应用文档目录
    final appDocumentsDir = await getApplicationDocumentsDirectory();
    final path = "${appDocumentsDir.path}/example.flac";

    // 调用yoruba_tts生成.flac文件
    await YorubaTts.generate(
        accessToken: "", text: 'Ẹ̀yà Yorùbá ni mo ti wá', filePath: path);

    // 使用just_audio插件播放生成的.flac文件
    AudioPlayer player = AudioPlayer();
    await player.setFilePath(path);
    await player.play();
  }

  @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: 'Increment',
        child: const Icon(Icons.speaker),
      ), // 这个尾随的逗号使自动格式化更美观
    );
  }
}

信用

该模型的功劳归于来自Meta AI的Vineel Pratap等人。以下是引用:

@article{pratap2023mms, title={Scaling Speech Technology to 1,000+ Languages}, author={Vineel Pratap and Andros Tjandra and Bowen Shi and Paden Tomasello and Arun Babu and Sayani Kundu and Ali Elkahky and Zhaoheng Ni and Apoorv Vyas and Maryam Fazel-Zarandi and Alexei Baevski and Yossi Adi and Xiaohui Zhang and Wei-Ning Hsu and Alexis Conneau and Michael Auli}, journal={arXiv}, year={2023} }


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用yoruba_tts插件来实现文本转语音功能的代码示例。yoruba_tts是一个Flutter插件,用于在支持TTS(文本转语音)的设备上进行语音合成。虽然这个插件的具体实现和功能可能会随着版本更新而变化,但以下示例代码应该为你提供一个基本的实现框架。

首先,确保你的Flutter项目已经创建,并且你已经添加了yoruba_tts依赖到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  yoruba_tts: ^最新版本号  # 请替换为最新的版本号

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

接下来,在你的Dart代码中,你可以按照以下步骤使用yoruba_tts插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Text to Speech Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late YorubaTts yorubaTts;

  @override
  void initState() {
    super.initState();
    yorubaTts = YorubaTts();

    // 检查TTS引擎是否可用
    yorubaTts.isLanguageAvailable("en-US").then((bool isAvailable) {
      setState(() {
        if (isAvailable) {
          print("TTS engine is available for en-US");
        } else {
          print("TTS engine is NOT available for en-US");
        }
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Text to Speech Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello, Flutter Text to Speech!',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                _speak("Hello, this is a text to speech demo using yoruba_tts plugin.");
              },
              child: Text('Speak'),
            ),
          ],
        ),
      ),
    );
  }

  void _speak(String text) {
    yorubaTts.setLanguage("en-US").then((_) {
      yorubaTts.speak(text).then((_) {
        print("Speaking: $text");
      }).catchError((error) {
        print("Error speaking: $error");
      });
    }).catchError((error) {
      print("Error setting language: $error");
    });
  }
}

在这个示例中,我们做了以下几件事情:

  1. 导入yoruba_tts包。
  2. MyAppMyHomePage类中设置基本的Flutter应用结构。
  3. _MyHomePageState类的initState方法中,初始化YorubaTts实例,并检查TTS引擎是否对指定的语言(在这个例子中是en-US)可用。
  4. 创建一个按钮,当点击按钮时,调用_speak方法来合成并播放文本。

请注意,yoruba_tts插件的具体API可能会随着版本更新而变化,因此请务必查阅最新的官方文档以获取最准确的信息。如果你打算使用特定的语言或方言(如Yoruba语),请确保该语言或方言在你的设备和TTS引擎中是可用的,并相应地调整语言代码。

回到顶部