Flutter AWS Polly 语音合成插件aws_polly_api的使用

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

Flutter AWS Polly 语音合成插件 aws_polly_api 的使用

Amazon Polly 是一项将文本转换为逼真语音的 Web 服务。通过 Amazon Polly,您可以创建应用程序,将各种书面内容转换为自然发音的语音。这里我们将介绍如何在 Flutter 应用中使用 aws_polly_api 插件来集成 Amazon Polly 服务。

关于服务

Amazon Polly 提供了从纯文本和语音合成标记语言 (SSML) 合成高质量语音的 API 操作,以及管理发音词典,使您能够为您的应用程序领域获得最佳结果。

相关链接

示例代码

下面是一个简单的示例,展示了如何初始化 Polly 客户端并调用其方法以生成语音文件。

添加依赖

首先,在你的 pubspec.yaml 文件中添加 aws_polly_api 依赖:

dependencies:
  aws_polly_api: ^1.0.0 # 确保版本号是最新的

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

初始化 Polly 客户端

接下来,你可以创建一个 Dart 文件(例如 main.dart),并在其中编写如下代码来初始化 Polly 客户端:

import 'package:aws_polly_api/polly-2016-06-10.dart';
import 'dart:io';

void main() async {
  // 初始化 Polly 客户端
  final polly = Polly(region: 'eu-west-1', credentials: AwsClientCredentials(
    accessKey: 'YOUR_ACCESS_KEY',
    secretKey: 'YOUR_SECRET_KEY',
  ));

  // 调用 SynthesizeSpeech 方法
  final response = await polly.synthesizeSpeech(
    Text: 'Hello, this is a test message.',
    OutputFormat: 'mp3',
    VoiceId: 'Joanna',
  );

  // 将响应保存为音频文件
  final file = File('speech.mp3');
  await file.writeAsBytes(response.audioStream);
  print('语音文件已保存到 ${file.path}');
}

更多关于Flutter AWS Polly 语音合成插件aws_polly_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter AWS Polly 语音合成插件aws_polly_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个使用Flutter中的aws_polly_api插件进行AWS Polly语音合成的代码示例。这个插件允许你通过Flutter应用与AWS Polly服务进行交互,生成文本到语音的音频。

首先,确保你已经在pubspec.yaml文件中添加了aws_polly_api依赖:

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

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

接下来是一个简单的Flutter应用示例,展示了如何使用aws_polly_api进行语音合成:

import 'package:flutter/material.dart';
import 'package:aws_polly_api/aws_polly_api.dart';
import 'dart:io';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final PollyClient _pollyClient = PollyClient(
    accessKeyId: 'YOUR_ACCESS_KEY_ID', // 请替换为你的AWS Access Key ID
    secretAccessKey: 'YOUR_SECRET_ACCESS_KEY', // 请替换为你的AWS Secret Access Key
    region: 'us-west-2', // 请根据你的需求选择合适的AWS区域
  );

  String _synthesisResult = '';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AWS Polly Flutter Demo'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              TextField(
                decoration: InputDecoration(
                  labelText: 'Enter text to synthesize',
                ),
                onChanged: (text) {},
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  setState(() {
                    _synthesisResult = 'Synthesizing...';
                  });

                  try {
                    final result = await _pollyClient.synthesizeSpeech(
                      text: 'Hello, this is a test message synthesized by AWS Polly.', // 这里可以替换为你TextField中的文本
                      outputFormat: PollyOutputFormat.mp3,
                      voiceId: 'Joanna', // 你可以选择不同的语音ID
                      sampleRate: PollySampleRate.hz16000,
                    );

                    // 保存合成的音频到本地文件
                    final file = File('synthesized_audio.mp3');
                    await file.writeAsBytes(result.audioStream.bytes);

                    setState(() {
                      _synthesisResult = 'Audio synthesized and saved as synthesized_audio.mp3';
                    });
                  } catch (e) {
                    setState(() {
                      _synthesisResult = 'Error: ${e.message}';
                    });
                  }
                },
                child: Text('Synthesize Speech'),
              ),
              SizedBox(height: 20),
              Text(_synthesisResult),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项:

  1. AWS凭证:在真实应用中,避免直接在代码中硬编码AWS凭证。考虑使用环境变量或AWS凭证管理工具(如AWS Secrets Manager或AWS Cognito)来安全地管理这些敏感信息。
  2. 权限:确保你的AWS IAM用户或角色具有调用AWS Polly服务的权限。
  3. 错误处理:在生产环境中,添加更详细的错误处理和用户反馈机制。
  4. 依赖版本:确保使用的是aws_polly_api插件的最新稳定版本。

这个示例展示了如何通过Flutter应用调用AWS Polly服务进行文本到语音的合成,并将生成的音频保存为本地文件。你可以根据需求进一步扩展这个示例,比如从用户输入获取文本、选择不同的语音ID或输出格式等。

回到顶部