《阿里云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

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
25天前
|
人工智能 JSON 自然语言处理
基于阿里云通义千问的AI模型应用开发指南
阿里云通义千问是阿里巴巴集团推出的多模态大语言模型平台,提供了丰富的API和接口,支持多种AI应用场景,如文本生成、图像生成和对话交互等。本文将详细介绍阿里云通义千问的产品功能,并展示如何使用其API来构建一个简单的AI应用,包括程序代码和具体操作流程,以帮助开发者快速上手。
396 3
|
14天前
|
人工智能 JSON API
阿里云文档智能 & RAG解决方案:提升AI大模型业务理解与应用
阿里云推出的文档智能 & RAG解决方案,旨在通过先进的文档解析技术和检索增强生成(RAG)方法,显著提升人工智能大模型在业务场景中的应用效果。该方案通过文档智能(Document Mind)技术将非结构化文档内容转换为结构化数据,提取文档的层级树、样式和版面信息,并输出为Markdown和Json格式,为RAG提供语义分块策略。这一过程不仅解决了文档内容解析错误和切块丢失语义信息的问题,还优化了输出LLM友好的Markdown信息。方案的优势在于其多格式支持能力,能够处理包括Office文档、PDF、Html、图片在内的主流文件类型,返回文档的样式、版面信息和层级树结构。
71 2
|
22天前
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
65 14
Elasticsearch Inference API增加对阿里云AI的支持
|
18天前
|
存储 人工智能 数据可视化
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
在数字化时代,企业面临海量客户对话数据处理的挑战。阿里云推出的“AI大模型助力客户对话分析”解决方案,通过先进的AI技术和智能化分析,帮助企业精准识别客户意图、发现服务质量问题,并生成详尽的分析报告和可视化数据。该方案采用按需付费模式,有效降低企业运营成本,提升客服质量和销售转化率。
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
|
14天前
|
人工智能 Cloud Native 数据管理
媒体声音|重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
在2024云栖大会上,阿里云瑶池数据库发布了首个一站式多模数据管理平台DMS:OneMeta+OneOps。该平台由Data+AI驱动,兼容40余种数据源,实现跨云数据库、数据仓库、数据湖的统一数据治理,帮助用户高效提取和分析元数据,提升业务决策效率10倍。DMS已服务超10万企业客户,降低数据管理成本高达90%。
|
14天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
9天前
|
人工智能 架构师
活动火热报名中|阿里云&Elastic:AI Search Tech Day
2024年11月22日,阿里云与Elastic联合举办“AI Search Tech Day”技术思享会活动。
119 2
|
10天前
|
存储 人工智能 分布式计算
大数据& AI 产品月刊【2024年10月】
大数据& AI 产品技术月刊【2024年10月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
10天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
50 3
|
9天前
|
存储 人工智能 大数据
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。

热门文章

最新文章