快速体验微软TTS服务

news2024/9/23 5:31:21

微软的语音合成服务(TTS)拥有500多种高品质的音色,并且在全球都有节点可以接入,在国内访问延迟可以控制在毫秒级。下面介绍在不需要编码的情况下,如何快速体验微软TTS的效果。

方式一、微软语音库UI界面

语音库地址:Speech Studio

条件:有微软开发账号

访问微软的语音库页面,在页面上选择需要体验的声音,然后输入对应文本,就能实时合成语音。

没有账号的话,可以听官方给的demo,效果可能会有差异。

方式二、REST API

TTS API:文本转语音 API 参考 (REST) - 语音服务 - Azure AI services | Microsoft Learn

条件:有语音服务的token

开发者有可能没有账号的权限,但是一定有sts的token,服务上线也需要这个token。

通过API获取音频需要分三步:

  1. 选取语音名称

  2. 获取TTS的访问token

  3. 调用语音合成接口

选取语音名称

一般我们会先在语音库试听声音的demo,大致选定几个声音。然后在“示例代码”里找到:

config.SpeechSynthesisVoiceName = "zh-CN-XiaochenMultilingualNeural";

"zh-CN-XiaochenMultilingualNeural"就是当前声音对应的名字。

另外,可以通过声音列表接口,获取全部支持的声音和可用的区域:

curl 'https://eastasia.tts.speech.microsoft.com/cognitiveservices/voices/list' --header 'Authorization: Bearer {accessToken}' 


--- 返回值 ---
[
    {
        "Name": "Microsoft Server Speech Text to Speech Voice (af-ZA, AdriNeural)",
        "DisplayName": "Adri",
        "LocalName": "Adri",
        "ShortName": "af-ZA-AdriNeural",
        "Gender": "Female",
        "Locale": "af-ZA",
        "LocaleName": "Afrikaans (South Africa)",
        "SampleRateHertz": "48000",
        "VoiceType": "Neural",
        "Status": "GA",
        "WordsPerMinute": "147"
    },
    ...
]

请求头里的accessToken就是第二步获取到访问token。

获取访问token

获取访问token需要先拿到语音服务的apiKey,这个需要用微软账号在后台先创建出来。然后通过接口获取访问token:

curl -X POST 'https://eastasia.api.cognitive.microsoft.com/sts/v1.0/issueToken' --header 'Ocp-Apim-Subscription-Key: {apiKey}' -d ''

调用语音合成接口

拿到访问token后,就能直接通过语音API /cognitiveservices/v1合成音频:

curl -X POST 'https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1' \
-H 'Authorization: Bearer {accessToken}' \
-H 'X-Microsoft-OutputFormat: audio-24khz-48kbitrate-mono-mp3' \
-H 'User-Agent: TEST' \
-H 'Content-Type: application/ssml+xml' \
-d '<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
  <voice name="zh-CN-XiaochenMultilingualNeural">
        hi there!How was your weekend?Did you do anything interesting?
  </voice>
</speak>' --output test.mp3

这里有几个注意点:

  1. apiKey是和区域绑定,选择endpoint的时候要注意对应关系。区域和endpoint关系

  2. X-Microsoft-OutputFormat决定合成音频的采样率和格式等信息,16khz效果较差,24khz和48kzh才有真人的感觉。音频输出格式

  3. body里填的是SSML格式内容,voice标签可以指定声音名字。SSML介绍

方式三、通过SDK合成

SDK方式:文本转语音快速入门 - 语音服务 - Azure AI services | Microsoft Learn

条件:有语音服务的token

通过SDK合成原理是本地与TTS服务建立websocket连接,支持合成音频内容流式输出,并且增加了许多回调事件。

线上环境应该优先使用SDK合成方式,这种方式准备环境比较复杂,需要预安装一些插件,具体不展开介绍,可以查看官方文档。安装语音SDK

安装完环境后,调用方式如下:

SpeechConfig config = SpeechConfig.fromSubscription("{apiKey}", "{region}");
config.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3);
config.setSpeechSynthesisVoiceName("zh-CN-XiaochenMultilingualNeural");
SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(config, null);
SpeechSynthesisResult speechSynthesisResult = speechSynthesizer.SpeakSsml("""
                    <speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
                      <voice name="zh-CN-XiaochenMultilingualNeural">
                            hi there!How was your weekend?Did you do anything interesting?
                      </voice>
                    </speak>
                    """);
System.out.println("音频的二进制内容:" + speechSynthesisResult.getAudioData());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2057371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网安加·百家讲坛 | 裴伟伟:蓝牙音箱和耳机安全测评报告

作者简介&#xff1a;裴伟伟&#xff0c;洞源实验室创始人&#xff0c;国家网安基地网络安全行业专家&#xff0c;网安加社区特聘专家&#xff0c;持有CISSP、PMP证书&#xff0c;曾在HITCON、可信云大会、开源产业大会等安全论坛发表演讲。曾任国内某安全实验室负责人、某互金…

Oracle SQL - 合并重叠的期间

数据和目标 有如下数据存储了各组件的有效期间&#xff08;此处起止日期用数字代替以便查阅&#xff09;&#xff0c;目标为将有重叠的期间合并到一起。 SQL> SELECT * FROM demo_eff_periods;COMPONENT_ITEM_ID EFFECTIVITY_DATE DISABLE_DATE ----------------- -------…

Spring GateWay自定义断言工厂

文章目录 概要整体架构流程最终的处理效果小结 概要 我们在线上系统部署了&#xff0c;灰度环境和生产环境时&#xff0c;可以通过自定义断言工厂去将请求需要路由到灰度环境的用户调用灰度的的服务集群&#xff0c;将正常的用户调用正常集群。 这样&#xff0c;我们可以在上线…

【UCB CS61C】Lecture 1 - Number Representation 数制

目录 进制的定义常用的进制与换算十进制到二进制的转换二进制到十六进制、十六进制到二进制的转换二进制向 n 进制的转换 有符号数处理&#xff08;Signed Representation&#xff09;无符号整数&#xff08;Unsigned Integers&#xff09;有符号整数&#xff08;Signed Interg…

亚德诺(ADI)超静音步进电机驱动芯片——TMC2209

芯品快报:德州仪器(TI)的高性能、集成式的双全桥电机驱动器——DRV8412 芯品快报:亚德诺(ADI)超静音步进电机驱动芯片——TMC2209 原创 IPBrain平台君 集成电路大数据平台 2024年08月16日 19:18 北京 平台君今天给大家介绍一款亚德诺(ADI)公司的用于两相步进电机的超…

Elasticsearch 使用误区之四——不合理的使用 track_total_hits

0、企业级实战问题 在使用 Elasticsearch 进行搜索时&#xff0c;我们常常关心匹配查询的文档总数而将 track_total_hits 设置为 true&#xff0c;如下截图所示&#xff0c;在数据量非常大的情况下这种检索导致的问题是&#xff1a;查询特别慢&#xff0c;聚合会更慢&#xff0…

RKNN在转换过程中的均值和方差设置问题

为什么ONNX转RKNN要匹配均值和方差&#xff1f; 因为不匹配精度会下降&#xff01;&#xff01;&#xff01; 一般的类似于YOLO模型 YOLO模型在ONNX转RKNN时rknn.config设置为 一些其他模型将数据送入模型时会进行前处理&#xff0c;前处理会设置均值和方差&#xff0c;则在转…

【Nginx】实现 FastCGI

为什么会有 FastCGI &#xff1f; CGI 协议虽然解决了语言解析器和 Web Server 之间通讯的问题&#xff0c;但是它的效率很低&#xff0c;因为 Web Server每收到一个请求都会创建一个CGI 进程&#xff0c; PHP 解析器都会解析 php.ini 文件&#xff0c;初始化环境&#xff0c…

LCP142 环形链表[leetcode-7]

LCP142 环形链表 先上结果 前排提醒&#xff0c;本文有两种解法&#xff0c;和原理分析 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次…

数据结构与算法 - 设计

1. LRU缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0…

0819、0820梳理及一些面试题梳理

一、抓包分析 二、HTTP服务器 三、动态库与静态库 四、一些面试题 指针数组和数组指针的区别&#xff1a;指针数组本质是一个数组&#xff0c;只是数组中存储的是指针变量。数组指针存储的是该数组的起始地址&#xff0c;对该指针来说每偏移一个单位就是偏移了一整个数组的地…

如何寻找专业精密机械零件代加工工厂

在现代工业生产中&#xff0c;精密机械零件的加工质量直接关系到产品的性能和可靠性。因此&#xff0c;寻找一家专业的精密机械零件代加工工厂至关重要。以下时利和整理分享的一些关于寻找专业精密机械零件代加工工厂的关键步骤和要点&#xff0c;帮助你找到合适的合作伙伴。 首…

想投资现货黄金?在TMGM开户需要多少钱?

最近&#xff0c;越来越多的人开始关注黄金投资&#xff0c;希望通过黄金来对冲风险、保值增值。而选择一家可靠的交易平台是进行黄金投资的第一步。TMGM作为全球知名的外汇交易商&#xff0c;也为投资者提供了黄金交易服务。那么&#xff0c;在TMGM开户投资黄金&#xff0c;需…

尚硅谷VUE项目实战,前端项目-尚品汇2

尚硅谷VUE项目实战&#xff0c;前端项目-尚品汇2 1、路由传参 2、重写push

数字转化为千位符形式, 百分比形式

Intl.NumberFormat 千位符&#xff1a; function formatAsRMB(num){return new Intl.NumberFormat(zh-CN,{style: decimal, //将数字格式化为十进制数currency: CNY, // 货币为人民币minimumFractionDigits: 0 // 表示不显示小数部分}).format(num)}const number 12345678co…

【C++进阶学习】第十四弹——特殊类设计——探寻各种情况下类的应用

前言&#xff1a; C类是C很重要的一个部分&#xff0c;在很多应用场景中都发挥着十分重要的作用&#xff0c;今天我们来讲解几个特殊场景下类的应用 目录 一、特殊类&#xff1a;只能在栈/堆上创建对象 1. 只在栈上创建对象 2. 只在堆上创建对象 二、特殊类&#xff1a;不能…

8.20 QT

1.思维导图 2. 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QTimerEvent> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidge…

Zookeeper中 Server 服务器的四种工作状态详解

Zookeeper中 Server 服务器的四种工作状态详解 1. LOOKING2. FOLLOWING3. LEADING4. OBSERVING&#xff08;3.3.0及以后版本&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; ZooKeeper集群中的服务器主要存在以下四种工作状态&a…

32位入门级MCU(ARM Cortex-M3内核)STM32F103系列

推荐: 32位入门级MCU(ARM Cortex-M3内核)中的六边形战士——STM32F103系列 为什么MCU中需要ADC模块 原创 IPBrain平台君 集成电路大数据平台 2024年08月19日 19:18 北京 自从平台君发布了几期关于MCU的文章之后,后台有很多小伙伴们留言。其中有位读者问平台君:平台君,…

python构建一个web程序

from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return 欢迎来到我的Python Web程序!if __name__ __main__:app.run(debugTrue)1、安装flask D:\Users\USER\PycharmProjects\pythonProject1\p01>pip install flask WARNING: Ignoring invalid…