前言

Link : Microsoft Speech API overview

通过这个链接,大致了解Bing speech API的语音识别和语音合成两部分,

这次是需要用到TTS,所以就直接看TTS相关的文档。

Link : Bing text to speech API

 

简介

使用Bing语音合成API,需要应用程序通过发送HTTP请求到云端,云端合成为人声后返回音频文件。

 

语音合成请求

JSON Web Token(JWT) access token


每一个的语音合成请求都需要一个JSON Web Token(JWT) access token,且这个JWT要放在语音请求的header中。每一个JWT持续10分钟,如果超时或者没有获得这个JWT,那么你的语音请求就会得到**[403 Forbidden]**的response。

所以,发送语音请求的第一步需要根据你的API密钥来获取,API密钥就是:

登录后就看的到了,有两个,哪个都行。

根据文档,发送POST请求来获取Base64 access token,用curl就如下:

E:\xxx>curl.exe -X POST --header "Content-Length: 0" --header "Ocp-Apim-Subscription-Key:your api key goes here" "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"

当然,用几次你就会想还是写个程序来的方便,哈哈。

那么,就得到了Base64 access token的一串东西,现在可以来发送语音合成的请求了。

 

HTTP headers


如下表:

Header Value Comments
Content-Type application/ssml+xml The input content type.
X-Microsoft-OutputFormat 1.ssml-16khz-16bit-mono-tts 2.raw-16khz-16bit-mono-pcm 3.audio-16khz-16kbps-mono-siren 4.riff-16khz-16kbps-mono-siren 5.riff-16khz-16bit-mono-pcm 6.audio-16khz-128kbitrate-mono-mp3 7.audio-16khz-64kbitrate-mono-mp3 8.audio-16khz-32kbitrate-mono-mp3 The output audio format.
X-Search-AppId A GUID (hex only, no dashes) An ID that uniquely identifies the client application. This can be the store ID for apps. If one is not available, the ID can be user generated for an application.
X-Search-ClientID A GUID (hex only, no dashes) An ID that uniquely identifies an application instance for each installation.
User-Agent Application name The application name is required and must be fewer than 255 characters.
Authorization Authorization token See the Authorization token section.

不是每一项都必须,我只用了加粗的那3个header

 

Input parameters


好,头已经准备就绪,只等……

body部分包含SSML,SSML通过更改参数可以改变输出的声音。

所以,语音输出请求就像这样:

POST /synthesize
HTTP/1.1
Host: speech.platform.bing.com X-Microsoft-OutputFormat: riff-8khz-8bit-mono-mulaw
Content-Type: application/ssml+xml
Authorization: Bearer [Base64 access_token] <speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Female' name='Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)'>Microsoft Bing Voice Output API</voice></speak>

请求之后一会儿服务器返回音频文件,程序中写入文件就好了。

 

SSML参考资料:

Changing voice output via SSML

SSML W3C Specification

P.S. Bing speech和Microsoft speech似乎不是同一套东西,但大部分规则是相通的:

Speech Synthesis Markup Language Reference

(这里是个总览,可以选择具体元素的页面)

以下几个页面对SSML的修饰有比较大的帮助:

1.prosody Element

(包括音调、速率、持续时间、音量等的描述)

2.phoneme Element

(这个元素主要针对如何改变发音的描述,此页面没有中文的例子,但可以先看看)

SSML说明

< prosody >音律调整

此部分说明了音律调整要用到的包括pitch(音调)、contour("音形")、 range(音调范围)、rate(速率)、duration(持续时间)和volume(音量)

语法:

<prosody pitch="value" contour="value" range="value" rate="value" duration="value" volume="value"> </prosody>

参数信息:

属性 描述
pitch 代表文字的基准音调,它的值有3种不同的方式表达:1.一个绝对的值,使用“数字Hz”的方式。例如,600Hz;2.一个相对的值,使用“+/-数字Hz/st”的方式,表示音调的变化程度。例如,+80Hz 或 -2st。st(semitone)表示一个半音;3.一个枚举的值,包括:x-low, low, medium, high, x-high, or default
contour 在不同的时间段内描述出音调变化(感觉是个高级特性),时间段用%作区隔,代表在此百分比时音调开始变化。例如,< prosody contour="(0%,+20Hz) (10%,-2st) (40%,+10Hz)" >
range 代表文字音调的范围,值同上面的pitch
rate 代表文字的阅读速率,它的值有2种不同的方式表达:1.一个相对的值,例如:1表示速率不变;.5表示速率减半;3表示3倍基本速率(测试发现用"+20%"的方式也行);2.一个枚举的值,包括:x-slow, slow, medium, fast, x-fast, or default
duration 文字阅读的持续时间,单位为s或ms
volume 代表阅读的音量大小,它的值有3中不同的方式表达:1.一个绝对的值,范围在0.0~100.0(从最小声到最大声)。例如,75。默认为100.0;2.一个相对的值,使用“+/-数字”的方式。例如,+10或-5.5;3.一个枚举的值,包括:silent, x-soft, soft, medium, loud, x-loud, or default
< phoneme >音素调整

此部分说明了如何从支持的语音字母表中来更改文字的发音。

语法:

<phoneme alphabet="string" ph="string"> </phoneme>

注意:参数alphabet的值只有3个:ipa | x-microsoft-sapi | x-microsoft-ups

也就是支持的发音字母表,参见:3.Phonetic Alphabet Reference

(Microsoft.speech的发音表,总共有3个,SAPI支持中文)

参数信息:

属性 描述
alphabet 可选。选择一个合适的发音字母表,值为:ipa / x-microsoft-sapi / x-microsoft-ups
ph 必须。一个描述如何发音的字符串,如果这个字符串不合法,TTS引擎会拒绝SSML文档,不会生成任何输出。中文发音标注的方式,例如,< phoneme alphabet="x-microsoft-sapi" ph="o 3" >哦< phoneme >,这里“哦”字的发音就是o的第三声。另外,12345代表汉语发音的4声和轻声

SSML例子:

<speak version="1.0"
xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice xml:lang="zh-CN" name="Microsoft Server Speech Text to Speech Voice (zh-CN, Kangkang, Apollo)">
<prosody rate="+20%" pitch="+8st" duration="220ms">
<phoneme alphabet="x-microsoft-sapi" ph="a 1">啊</phoneme>
</prosody>
<prosody rate="-20%" duration="380ms">
<phoneme alphabet="x-microsoft-sapi" ph="ou 1">哦</phoneme>
</prosody>
</voice>
</speak>

 

对了,还有另一位老兄的文章,是Bing speech语音识别那部分的:http://blog.csdn.net/kwgrg/article/details/54809238

Have fun!

必应语音API(Bing text to speech API)的更多相关文章

  1. 利用Google Speech API实现Speech To Text

    很久很久以前, 网上流传着一个免费的,识别率暴高的,稳定的 Speech To Text API, 那就是Google Speech API. 但是最近再使用的时候,总是返回500 Error. 后来 ...

  2. 必应(Bing)每日图片获取API

    必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 Value Description title ...

  3. 语音识别(Web Speech API)

    近期看了一个语音识别的dome-----Web Speech API 本api为js调用云端接口识别 个人测试了一下,响应速度还是比较快的 注意:本API与官网需翻墙使用和访问 展示效果: 页面代码如 ...

  4. HTML5 Web Speech API 结合Ext实现浏览器语音识别以及输入

    简介      Web Speech API是HTML5技术中的一个提供原生语音识别技术的API,Google Chrome在25版之后开始支持Web Speech API,Google也提供了一个 ...

  5. 【miscellaneous】使用Google语音识别引擎(Google Speech API)[3月5日修改]

    原文:http://blog.csdn.net/dlangu0393/article/details/7214728#comments 近期重写本文,暂时禁止评论. 最近在使用Qt编写一个客户端程序的 ...

  6. xe5 android tts(Text To Speech)

    xe5 android  tts(Text To Speech) TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转 ...

  7. delphi xe5 android tts(Text To Speech)

    TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...

  8. 【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据

    原文:[百度地图API]如何利用地图API制作汽车沿道路行驶的动画?--如何获得道路层数据 有几个做汽车导航的朋友问我说,他们想在地图上制作一辆车沿着道路行驶的动画.可是,百度地图的道路数据并没有公开 ...

  9. ES系列四、ES6.3常用api之文档类api

    1.Index API: 创建并建立索引 PUT twitter/tweet/ { "user" : "kimchy", "post_date&quo ...

随机推荐

  1. 拓普微小尺寸TFT液晶屏-高性价比

    智能模块(Smart LCD)是专为工业显示应用而设计的TFT液晶显示模块. 模块自带主控IC.Flash存储器.实时嵌入式操作系统,客户主机可把要存储的数据(如背景图.图标等)存储到屏的flash中 ...

  2. 微信小程序のCss(一)

    一.margin:外边距:设置对象四边的外延边距. margin: 20rpx 10rpx 25rpx 10rpx :如果提供全部四个参数值,将按上.右.下.左的顺序作用于四边. margin:20r ...

  3. Android清理设备内存具体完整演示样例(二)

    版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c; import j ...

  4. vs2008内存泄露检測得到完美解决

    版权声明:原创文章.转载请注明出处.本博新地址www.iaccepted.net https://blog.csdn.net/IAccepted/article/details/27646679 Vi ...

  5. 生成条形码插件 条形码--JsBarcode

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 介绍一下在GitHub生成条形码的js插件→JsBarcode 条码支持的有: CODE128 ...

  6. ORB-SLAM2(3) ROS下实时跑ORB_SLAM2

    Step1 : 运行内核 roscore Step2 : 启动相机 cd catkin_ws/src/usb_cam/launch #进入usb_cam驱动的安装目录 roslaunch my_cam ...

  7. Codeforces Round #553 (Div. 2) D. Stas and the Queue at the Buffet 贪心+公式转化

    题意 给出n个pair (a,b) 把它放在线性序列上 1--n 上 使得  sum(a*(j-1)+b*(n-j))  最小 思路 :对式子进行合并 同类项 有:    j*(a-b)+  (-a+ ...

  8. 转载 js函数声明和函数表达式

    在js中函数有两种表达方式.1 函数声明 2 函数表达式 函数声明 function sayname(){ alert("li lei"); } 函数表达式 var sayname ...

  9. [转]qtcreator中常用快捷键总结

    F1 查看帮助 F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果) Shift+F2 声明和定义之间切换 F4 头文件和源文件之间切换 Ctrl+ 欢迎模式 Ctrl+ 编辑模式 Ctrl+ 调试 ...

  10. PAT A1140 Look-and-say Sequence (20 分)——数学题

    Look-and-say sequence is a sequence of integers as the following: D, D1, D111, D113, D11231, D112213 ...