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

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
人工智能 机器人 语音技术
ai智能语音机器人运营的核心
​  运营机器人核心关注的只有两个点,一个是机器人话术库的关键词是否充足,二是对录音的高要求。每一个话术,都把它当成一个重要的项目来做。比如做需求调研,学习客户的行业知识,了解他们这个行业打电话的语气语调。其它的东西,能拿出来运营的机器人产品,核心的东西都不会差到哪去。有关系统问题欢迎看博主名字一起技术交流。![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1589ad7c9f1423bb24c7f5f6a2bcc42~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=814&h=232&s=
ai智能语音机器人运营的核心
|
存储 人工智能 搜索推荐
AI智能语音机器人的基本业务流程
先画个图,了解下AI语音机器人的基本业务流程。 上图是一个AI语音机器人的业务流程,简单来说就是首先要配置话术,就是告诉机器人在遇到问题该怎么回答,这个不同公司不同行业的差别比较大,所以一般每个客户都会配置其个性化的话术。 话术配置完成后,需要给账号配置线路,目的就是能够顺利的把电话打出去。 线路配完后,就是建立任务了,说白了就是导入电话号码,因为资源有限,不可能导入一批立即打完,所以需要以任务的形式分配给机器人,然后机器人逐个完成。值得一提的是,如果有多条线路,创建任务时建议提供线路选择功能,很多公司的业务不止一个城市,而大家又是比较习惯接听自己所在城市的电话,所以这个选择主
|
7月前
|
人工智能 自然语言处理 语音技术
Step-Audio:开源语音交互新标杆!这个国产AI能说方言会rap,1个模型搞定ASR+TTS+角色扮演
Step-Audio 是由阶跃星辰团队推出的开源语音交互模型,支持多语言、方言和情感表达,能够实现高质量的语音识别、对话和合成。本文将详细介绍其核心功能和技术原理。
867 91
Step-Audio:开源语音交互新标杆!这个国产AI能说方言会rap,1个模型搞定ASR+TTS+角色扮演
|
7月前
|
人工智能 编解码 语音技术
SpeechGPT 2.0:复旦大学开源端到端 AI 实时语音交互模型,实现 200ms 以内延迟的实时交互
SpeechGPT 2.0 是复旦大学 OpenMOSS 团队推出的端到端实时语音交互模型,具备拟人口语化表达、低延迟响应和多情感控制等功能。
1588 21
SpeechGPT 2.0:复旦大学开源端到端 AI 实时语音交互模型,实现 200ms 以内延迟的实时交互
|
8月前
|
人工智能 自然语言处理 搜索推荐
GLM-Realtime:智谱推出多模态交互AI模型,融入清唱功能,支持视频和语音交互
GLM-Realtime 是智谱推出的端到端多模态模型,具备低延迟的视频理解与语音交互能力,支持清唱功能、2分钟内容记忆及灵活调用外部工具,适用于多种智能场景。
333 4
GLM-Realtime:智谱推出多模态交互AI模型,融入清唱功能,支持视频和语音交互
|
8月前
|
弹性计算 JSON 自然语言处理
语音交互产品通过WebSocket协议对外提供实时语音流语音转写功能
阿里云智能语音交互产品通过WebSocket协议提供实时语音转写功能,支持长语音。音频流以Binary Frame上传,指令和事件为Text Frame。支持单声道、16 bit采样位数的PCM、WAV等格式,采样率8000Hz/16000Hz。可设置返回中间结果、添加标点、中文数字转阿拉伯数字,并支持多语言识别。服务端通过临时Token鉴权,提供外网和上海ECS内网访问URL。交互流程包括StartTranscription、StopTranscription指令及多种事件反馈。
|
8月前
|
人工智能 搜索推荐 Serverless
云端问道22期——AI智能语音实时互动
《云端问道22期——AI智能语音实时互动》分享了构建用户与AI智能语音实时互动的方法,涵盖七个部分:进入解决方案页、方案介绍、操作步骤、创建AI智能体、实时工作模版、部署应用及应用体验。通过阿里云平台,用户可以快速部署并体验AI语音通话功能,包括语音转文字、文字转语音、个性化定制智能体人设及接入私有知识库等。整个过程简单流畅,适合开发者和企业快速上手。
384 8
|
10月前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
3760 3
|
10月前
|
人工智能 自然语言处理 语音技术
智能语音交互:AI如何重塑人际沟通###
【10月更文挑战第22天】 本文旨在探讨智能语音交互技术如何深刻改变我们的人际沟通方式,从历史沿革、技术原理、应用领域到未来趋势,全面剖析这一AI技术的魅力与影响。通过生动实例与通俗语言,揭示智能语音交互背后的科技力量,以及它如何让沟通更自然、高效,同时引发关于隐私、伦理等问题的深思。 ###
376 4
|
10月前
|
存储 人工智能 搜索推荐
AI智能语音机器人的基本业务流程
简介: 先画个图,了解下AI语音机器人的基本业务流程。上图是一个AI语音机器人的业务流程,简单来说就是首先要配置话术,就是告诉机器人在遇到问题该怎么回答,这个不同公司不同行业的差别比较大,所以一般每个客户都会配置其个性化的话术。话术配置完成后,需要给账号配置线路,目的就是能够顺利的把电话打出去。线路配完后,就是建立任务了,说白了就是导入电话号码,因为资源有限,不可能导入一批立即打完,所以需要以任务的形式分配给机器人,然后机器人逐个完成。值得一提的是,如果有多条线路,创建任务时建议提供线路选择功能,很多公司的业务不止一个城市,而大家又是比较习惯接听自己所在城市的电话,所以这个选择主