微软文本转语音实测记录
微软文本转语音
接口地址
地址:http://www.mysqlschool.cn/SpeekText/index.php
提交方式:post/get 推荐post
单段落例子:http://www.mysqlschool.cn/SpeekText/index.php
多段落例子:http://www.mysqlschool.cn/SpeekText/SpeekText.html
生成失败无需刷新页面重新点击生成语音即可
参数讲解
voice_name 可选项
zh-CN-XiaoxiaoNeural > Xiaoxiao (Neural) - 晓晓 zh-CN-YunyangNeural > Yunyang (Neural) - 云扬 zh-CN-XiaochenNeural > Xiaochen (Neural) - 晓辰 zh-CN-XiaohanNeural > Xiaohan (Neural) - 晓涵 zh-CN-XiaomoNeural > Xiaomo (Neural) - 晓墨 zh-CN-XiaoqiuNeural > Xiaoqiu (Neural) - 晓秋 zh-CN-XiaoruiNeural > Xiaorui (Neural) - 晓睿 zh-CN-XiaoshuangNeural > Xiaoshuang (Neural) - 晓双 zh-CN-XiaoxuanNeural > Xiaoxuan (Neural) - 晓萱 zh-CN-XiaoyanNeural > Xiaoyan (Neural) - 晓颜 zh-CN-XiaoyouNeural > Xiaoyou (Neural) - 晓悠 zh-CN-YunxiNeural > Yunxi (Neural) - 云希 zh-CN-YunyeNeural > Yunye (Neural) - 云野
role 可选项
角色 | 说明 |
---|---|
role="Girl" |
该语音模拟女孩。 |
role="Boy" |
该语音模拟男孩。 |
role="YoungAdultFemale" |
该语音模拟年轻成年女性。 |
role="YoungAdultMale" |
该语音模拟年轻成年男性。 |
role="OlderAdultFemale" |
该语音模拟年长的成年女性。 |
role="OlderAdultMale" |
该语音模拟年长的成年男性。 |
role="SeniorFemale" |
该语音模拟老年女性。 |
role="SeniorMale" |
该语音模拟老年男性。 |
Style 可选项
Style | 说明 |
---|---|
style="affectionate" |
以较高的音调和音量表达温暖而亲切的语气。 说话者处于吸引听众注意力的状态。 说话者的个性往往是讨喜的。 |
style="angry" |
表达生气和厌恶的语气。 |
style="assistant" |
以热情而轻松的语气对数字助理讲话。 |
style="calm" |
以沉着冷静的态度说话。 语气、音调和韵律与其他语音类型相比要统一得多。 |
style="chat" |
表达轻松随意的语气。 |
style="cheerful" |
表达积极愉快的语气。 |
style="customerservice" |
以友好热情的语气为客户提供支持。 |
style="depressed" |
调低音调和音量来表达忧郁、沮丧的语气。 |
style="disgruntled" |
表达轻蔑和抱怨的语气。 这种情绪的语音表现出不悦和蔑视。 |
style="embarrassed" |
在说话者感到不舒适时表达不确定、犹豫的语气。 |
style="empathetic" |
表达关心和理解。 |
style="envious" |
当你渴望别人拥有的东西时,表达一种钦佩的语气。 |
style="fearful" |
以较高的音调、较高的音量和较快的语速来表达恐惧、紧张的语气。 说话人处于紧张和不安的状态。 |
style="gentle" |
以较低的音调和音量表达温和、礼貌和愉快的语气。 |
style="lyrical" |
以优美又带感伤的方式表达情感。 |
style="narration-professional" |
以专业、客观的语气朗读内容。 |
style="narration-relaxed" |
为内容阅读表达一种舒缓而悦耳的语气。 |
style="newscast" |
以正式专业的语气叙述新闻。 |
style="newscast-casual" |
以通用、随意的语气发布一般新闻。 |
style="newscast-formal" |
以正式、自信和权威的语气发布新闻。 |
style="sad" |
表达悲伤语气。 |
style="serious" |
表达严肃和命令的语气。 说话者的声音通常比较僵硬,节奏也不那么轻松。 |
其他参数请看《通过语音合成标记语言 (SSML) 改善合成》
预生成的神经语音
预生成的神经网络声音是从使用 24 khz 采样率的样本创建的。 合成时,所有声音都可以使用其他采样率进行上采样或下采样。
下表列出了每种语言支持的预生成的神经网络声音。
这里只写了中文的各种参数配置,全部配置可看《语音服务的语言和语音支持》
自己写的php接口源码
隐藏内容
此处内容需要权限查看
GO源码
其他语言源码可看《Cognitive-Speech-TTS》
package main
import (
"bytes"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"time"
)
// auth token
// var token = ""
func GetToken(auth string, key string) string {
postData := []byte("")
req, err := http.NewRequest("POST", auth, bytes.NewBuffer(postData))
if err != nil {
log.Printf("New request with error %s\n", err)
}
token := ""
req.Header.Set("Ocp-Apim-Subscription-Key", key)
response, err := http.DefaultClient.Do(req)
if err != nil {
log.Printf("Do request failed with error %s\n", err)
} else {
defer response.Body.Close()
data, _ := ioutil.ReadAll(response.Body)
token = string(data)
log.Println("token is", token)
}
return token
}
func GetAudioBytes(client *http.Client, endpoint string, authToken string, ssml string) {
start := time.Now()
postData := []byte(ssml)
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(postData))
if err != nil {
log.Printf("New request with error %s\n", err)
return
}
req.Header.Set("content-type", "application/ssml+xml")
req.Header.Set("X-Microsoft-OutputFormat", "riff-24khz-16bit-mono-pcm")
req.Header.Set("Authorization", "Bearer "+authToken)
req.Header.Set("User-Agent", "GoClient")
response, err := client.Do(req)
if err != nil {
log.Printf("Do request failed with error %s\n", err)
} else {
defer response.Body.Close()
if response.StatusCode == 200 {
data, _ := ioutil.ReadAll(response.Body)
log.Println("audio byte len is", len(data))
ioutil.WriteFile("output.mp3", data, 0644)
} else {
log.Println("status code is", response.StatusCode)
}
}
elapsed := time.Since(start)
log.Printf("GetAudioBytes took %s", elapsed)
}
func main() {
f, err := os.OpenFile("run.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
return
}
defer f.Close()
wrt := io.MultiWriter(os.Stdout, f)
log.SetOutput(wrt)
log.Println("Starting the application...")
endpoint := "https://注册时写的位置.tts.speech.microsoft.com/cognitiveservices/v1"
auth := "https://注册时写的位置.api.cognitive.microsoft.com/sts/v1.0/issueToken"
key := "你的key"
token := GetToken(auth, key)
ticker := time.NewTicker(300 * time.Second)
go func() {
for range ticker.C {
log.Println("Refreshing token")
t := GetToken(auth, key)
if len(t) != 0 {
token = t
}
}
}()
tr := &http.Transport{
MaxIdleConns: 100,
MaxIdleConnsPerHost: 20,
}
client := &http.Client{
Transport: tr,
}
GetAudioBytes(client, endpoint, token, "<speak version='1.0' xml:lang='zh-CN'><voice name='zh-CN-YunyeNeural'>哈哈哈,终于成功了!</voice></speak>")
}
声明:本站(www.mysqlschool.cn)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。