《阿里云AI产品必知必会系列电子书》——智能语音交互——语音合成QuickStart使用教程

简介: 《阿里云AI产品必知必会系列电子书》——智能语音交互——语音合成QuickStart使用教程

语音合成Quick Start使用教程


一、服务开通以及项目创建请参考:一句话识别Quick Start使用教程


二、通过SDK调用一句话识别服务


1.添加maven依赖


<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>aliyun-java-sdk-core</artifactId>
 <version>4.5.13</version>
 </dependency>
 <dependency>
 <groupId>com.alibaba.nls</groupId>
 <artifactId>nls-sdk-tts</artifactId>
 <version>2.2.1</version>
</dependency>


2. java SDK Code

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffffer;
import com.alibaba.nls.client.AccessToken;
import com.alibaba.nls.client.protocol.NlsClient;
import com.alibaba.nls.client.protocol.OutputFormatEnum;
import com.alibaba.nls.client.protocol.SampleRateEnum;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizer;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerListener;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 此示例演示了:
 * 语音合成API调用。
 * 动态获取token。
 * 流式合成TTS。
 * 首包延迟计算。
 */
public class SpeechSynthesizerDemo {
 private static fifinal Logger logger = LoggerFactory.getLogger(SpeechSynthesizerDemo.class);
 private static long startTime;
 private String appKey;
 NlsClient client;
 public SpeechSynthesizerDemo(String appKey, String accessKeyId, String accessKeySecret) {
 this.appKey = appKey;
 private static SpeechSynthesizerListener getSynthesizerListener() {
 SpeechSynthesizerListener listener = null;
 try {
 listener = new SpeechSynthesizerListener() {
 File f=new File("tts_test.wav");
 FileOutputStream fout = new FileOutputStream(f);
 private boolean fifirstRecvBinary = true;
 //语音合成结束
 @Override
 public void onComplete(SpeechSynthesizerResponse response) {
 //调用onComplete时表示所有TTS数据已接收完成,因此为整个合成数据的延迟。该延迟可能较大,不一定满足实
时场景。
 System.out.println("name: " + response.getName() +
 ", status: " + response.getStatus()+
 ", output fifile :"+f.getAbsolutePath()
 );
 }
 //语音合成的语音二进制数据
 @Override
 public void onMessage(ByteBuffffer message) {
 try {
 if(fifirstRecvBinary) {
 //计算首包语音流的延迟,收到第一包语音流时,即可以进行语音播放,以提升响应速度(特别是实时交互场
景下)。
 fifirstRecvBinary = false;
 long now = System.currentTimeMillis();
 logger.info("tts fifirst latency : " + (now - SpeechSynthesizerDemo.startTime) + " ms");
 }
byte[] bytesArray = new byte[message.remaining()];
 message.get(bytesArray, 0, bytesArray.length);
 fout.write(bytesArray);
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 @Override
 public void onFail(SpeechSynthesizerResponse response){
 //task_id是调用方和服务端通信的唯一标识,当遇到问题时需要提供task_id以便排查。
 System.out.println(
 "task_id: " + response.getTaskId() +
 //状态码 20000000 表示识别成功
 ", status: " + response.getStatus() +
 //错误信息
 ", status_text: " + response.getStatusText());
 }
 };
 } catch (Exception e) {
 e.printStackTrace();
 }
return listener;
 }
 public void process() {
 SpeechSynthesizer synthesizer = null;
 try {
 //创建实例,建立连接。
 synthesizer = new SpeechSynthesizer(client, getSynthesizerListener());
 synthesizer.setAppKey(appKey);
//设置返回音频的编码格式
 synthesizer.setFormat(OutputFormatEnum.WAV);
 //设置返回音频的采样率
 synthesizer.setSampleRate(SampleRateEnum.SAMPLE_RATE_16K);
 //发音人
 synthesizer.setVoice("siyue");
 //语调,范围是-500~500,可选,默认是0。
 synthesizer.setPitchRate(100);
 //语速,范围是-500~500,默认是0。
 synthesizer.setSpeechRate(100);
 //设置用于语音合成的文本
 synthesizer.setText("欢迎使用阿里巴巴智能语音合成服务,您可以说北京明天天气怎么样啊");
 // 是否开启字幕功能(返回相应文本的时间戳),默认不开启,需要注意并非所有发音人都支持该参数。
 synthesizer.addCustomedParam("enable_subtitle", false);
 //此方法将以上参数设置序列化为JSON格式发送给服务端,并等待服务端确认。
 long start = System.currentTimeMillis();
 synthesizer.start();
 logger.info("tts start latency " + (System.currentTimeMillis() - start) + " ms");
 SpeechSynthesizerDemo.startTime = System.currentTimeMillis();
 //等待语音合成结束
 synthesizer.waitForComplete();
 logger.info("tts stop latency " + (System.currentTimeMillis() - start) + " ms");
 } catch (Exception e) {
 e.printStackTrace();
 } fifinally {
 //关闭连接
 if (null != synthesizer) {
 synthesizer.close();
 }
}
 }
 public void shutdown() {
 client.shutdown();
 }
 public static void main(String[] args) throws Exception {
 String appKey = "";
 String id = "";
 String secret = "";
 String url = ""; //默认值:wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1
 if (args.length == 3) {
 appKey = args[0];
 id = args[1];
 secret = args[2];
 } else if (args.length == 4) {
 appKey = args[0];
 id = args[1];
 secret = args[2];
 url = args[3];
 } else {
 System.err.println("run error, need params(url is optional): " + "<app-key> <AccessKeyId> <AccessKeySecret> 
[url]");
 System.exit(-1);
 }
 SpeechSynthesizerDemo demo = new SpeechSynthesizerDemo(appKey, id, secret, url);
 demo.process();
 demo.shutdown();
 }
}


3.填入参数


image.png


4.测试结果


image.png

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
6月前
|
开发工具
阿里云百炼应用中心--QuickStart
针对阿里云最新推出的大模型平台:百炼,试用其应用中心的功能,通过Step By Step详细演示该产品的使用。
425 1
|
10月前
|
域名解析 弹性计算 网络协议
阿里云轻量应用服务器使用教程(2023新版)
阿里云轻量应用服务器使用教程(2023新版)阿里云轻量应用服务器怎么使用?阿里云轻量应用服务器使用教程:轻量应用服务器购买、重置密码、远程连接、宝塔面板的Web环境搭建、WordPress网站程序安装到网站上线,阿里云服务器网分享轻量应用服务器从购买、配置建站环境、轻量服务器应用服务器远程连接、开端口到网站上线全流程
|
1天前
|
弹性计算 安全 数据库
2024年阿里云优惠券领取及使用教程
2024年阿里云优惠券领取及使用教程
453 0
|
1天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
133 3
|
1天前
|
弹性计算 关系型数据库 MySQL
阿里云MySQL云数据库优惠价格、购买和使用教程分享!
阿里云数据库使用流程包括购买和管理。首先,选购支持MySQL、SQL Server、PostgreSQL等的RDS实例,如选择2核2GB的MySQL,设定地域和可用区。购买后,等待实例创建。接着,创建数据库和账号,设置DB名称、字符集及账号权限。最后,通过DMS登录数据库,填写账号和密码。若ECS在同一地域和VPC内,可内网连接,记得将ECS IP加入白名单。
477 2
|
1天前
|
SQL 关系型数据库 MySQL
阿里云mysql数据库价格购买和使用教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,通过选择配置、地域和可用区完成购买。创建数据库和账号,分配权限。使用DMS登录数据库,进行管理操作。确保ECS与RDS在同一地域的VPC内,配置白名单实现内网连接。详细步骤见官方文档。
641 1
|
1天前
|
存储 弹性计算 数据库
阿里云优惠券是什么?2024年阿里云优惠券领取地址及使用教程汇总
阿里云作为国内领先的云计算服务提供商,为广大用户提供了丰富的云产品和解决方案。为了吸引用户上云,阿里云经常推出各种优惠活动,其中最受用户欢迎的就是阿里云优惠券。那么,阿里云优惠券究竟是什么呢?我们又该如何领取它呢?本文将为大家详细解答。
327 2
|
1天前
|
存储 弹性计算 数据库
2024年阿里云优惠券领取、使用教程及常见问题整理总结
随着云计算技术的不断发展,越来越多的企业和个人选择将业务迁移到云端。阿里云作为国内领先的云服务提供商,为用户提供了丰富的产品和服务。为了帮助用户降低成本,阿里云推出了优惠券活动,本文将为大家介绍阿里云优惠券的领取、使用方法以及常见问题解答。
239 0
|
1天前
|
存储 弹性计算 数据库
2024年阿里云优惠券领取和使用教程分享(图文教程)
2024年阿里云优惠券怎么领取?为了助力更多用户优惠上云,也为了让更多用户选择阿里云的云产品完成上云,阿里云公司针对新用户推出了满减优惠券,这款抵扣优惠券也就是大家俗称的满减抵扣券,自领取日30天起内有效。领取和使用优惠券是很多新手用户上云的必领福利,本文为各位新手用户介绍下2024年阿里云优惠券的领取和使用教程。
204 0
|
10月前
|
存储 弹性计算 移动开发
阿里云电脑怎么使用?无影云电脑使用教程
阿里云电脑怎么使用?无影云电脑使用教程,阿里云无影云电脑即无影云桌面,云电脑如何使用?云电脑购买后没有用户名和密码,先创建用户设置密码,才可以登录连接到云电脑。云电脑想要访问公网还需要开通互联网访问功能。阿里云百科来详细说下阿里云无影云电脑从购买、创建用户名密码和访问互联网全过程
490 0

热门文章

最新文章