更新记录
1.0.6(2024-01-19)
启用扬声器
1.0.5(2024-01-19)
增加切换到扬声器
1.0.4(2024-01-14)
ios回调问题
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
Android:5.0,iOS:11,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
sm-ms-speech
开发文档
UTS 语法 UTS API插件 UTS 组件插件 Hello UTS
插件使用流程:
- 试用插件,选择该插件绑定的项目,导入插件到指定项目。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,得到自定义基座,进行log输出测试。
- 开发完毕后,测试没问题,可购买插件,云打包。
- UTS插件目前不支持离线打包。
微软原生语音合成插件,文本转语音,支持SSML
sm-ms-speech简介
文本转语音可让应用程序、工具或设备将文本转换为类似于人类的合成语音。 文本转语音功能也称为语音合成。 使用现成的类似于人类的预生成神经网络声音,或根据你的产品或品牌创建独特的神经网络定制声音。 有关支持的声音、语言和区域设置的完整列表,请参阅语音服务的语言和声音支持。
核心功能
文本转语音包括以下功能:
功能 | 总结 |
---|---|
预生成的神经网络声音(在定价页面中称为“神经网络”) | 高度自然的现成语音。 |
自定义神经语音(在定价页面中称为“自定义神经”) | 易于使用的自助服务,可创建自然的品牌语音并限制访问,使用户以负责的态度使用。 |
有建议和定制需要,请联系QQ:592121306
插件使用
在 script
中引入组件
import * as MSSpeech from "@/uni_modules/sm-ms-speech"
初始化
MSSpeech.initSpeech({
speechKey: "",
speechRegion: ""
});
开始播放,可配置一些基础参数
详细参数设置请参考:https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/speech-synthesis-markup-voice
MSSpeech.speakCustom({
content : string //待播放的文本
language : string | null //语言,如zh-CN
voiceName : string | null //发音人 ,如 zh-CN-XiaoxiaoNeural
style : string | null //讲话风格,如angry,sad
role : string | null //角色,如Girl,Boy,SeniorMale
pitch : string | null //音调
rate : string | null //速率
volume : string | null //声音
});
语音和发音人参考:
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/language-support?tabs=tts
下表介绍了每个受支持的 style
属性:
Style | 说明 |
---|---|
style="advertisement_upbeat" |
用兴奋和精力充沛的语气推广产品或服务。 |
style="affectionate" |
以较高的音调和音量表达温暖而亲切的语气。 说话者处于吸引听众注意力的状态。 说话者的个性往往是讨喜的。 |
style="angry" |
表达生气和厌恶的语气。 |
style="assistant" |
数字助理用的是热情而轻松的语气。 |
style="calm" |
以沉着冷静的态度说话。 语气、音调和韵律与其他语音类型相比要统一得多。 |
style="chat" |
表达轻松随意的语气。 |
style="cheerful" |
表达积极愉快的语气。 |
style="customerservice" |
以友好热情的语气为客户提供支持。 |
style="depressed" |
调低音调和音量来表达忧郁、沮丧的语气。 |
style="disgruntled" |
表达轻蔑和抱怨的语气。 这种情绪的语音表现出不悦和蔑视。 |
style="documentary-narration" |
用一种轻松、感兴趣和信息丰富的风格讲述纪录片,适合配音纪录片、专家评论和类似内容。 |
style="embarrassed" |
在说话者感到不舒适时表达不确定、犹豫的语气。 |
style="empathetic" |
表达关心和理解。 |
style="envious" |
当你渴望别人拥有的东西时,表达一种钦佩的语气。 |
style="excited" |
表达乐观和充满希望的语气。 似乎发生了一些美好的事情,说话人对此满意。 |
style="fearful" |
以较高的音调、较高的音量和较快的语速来表达恐惧、紧张的语气。 说话人处于紧张和不安的状态。 |
style="friendly" |
表达一种愉快、怡人且温暖的语气。 听起来很真诚且满怀关切。 |
style="gentle" |
以较低的音调和音量表达温和、礼貌和愉快的语气。 |
style="hopeful" |
表达一种温暖且渴望的语气。 听起来像是会有好事发生在说话人身上。 |
style="lyrical" |
以优美又带感伤的方式表达情感。 |
style="narration-professional" |
以专业、客观的语气朗读内容。 |
style="narration-relaxed" |
为内容阅读表达一种舒缓而悦耳的语气。 |
style="newscast" |
以正式专业的语气叙述新闻。 |
style="newscast-casual" |
以通用、随意的语气发布一般新闻。 |
style="newscast-formal" |
以正式、自信和权威的语气发布新闻。 |
style="poetry-reading" |
在读诗时表达出带情感和节奏的语气。 |
style="sad" |
表达悲伤语气。 |
style="serious" |
表达严肃和命令的语气。 说话者的声音通常比较僵硬,节奏也不那么轻松。 |
style="shouting" |
表达一种听起来好像声音在远处或在另一个地方的语气,努力让别人听清楚。 |
style="sports_commentary" |
表达一种既轻松又感兴趣的语气,用于播报体育赛事。 |
style="sports_commentary_excited" |
用快速且充满活力的语气播报体育赛事精彩瞬间。 |
style="whispering" |
表达一种柔和的语气,试图发出安静而柔和的声音。 |
style="terrified" |
表达一种害怕的语气,语速快且声音颤抖。 听起来说话人处于不稳定的疯狂状态。 |
style="unfriendly" |
表达一种冷淡无情的语气。 |
角色 | 说明 |
---|---|
role="Girl" |
声音模仿女孩。 |
role="Boy" |
声音模仿男孩。 |
role="YoungAdultFemale" |
声音模仿年轻的成年女性。 |
role="YoungAdultMale" |
声音模仿年轻的成年男性。 |
role="OlderAdultFemale" |
声音模仿年长的成年女性。 |
role="OlderAdultMale" |
声音模仿年长的成年男性。 |
role="SeniorFemale" |
声音模仿年老女性。 |
role="SeniorMale" |
声音模仿年老男性。 |
属性 | 说明 | 必需还是可选 |
---|---|---|
pitch |
指示文本的基线音节。 可在句子层面应用音节的变化。 音调变化应为原始音频的 0.5 到 1.5 倍。 可将音调表述为:绝对值:以某个数字后接“Hz”(赫兹)表示。 例如 <prosody pitch="600Hz">some text</prosody> 。相对值:以相对数字表示:以前面带有“+”或“-”且后接“Hz”或“st”(用于指定音节的变化量)的数字表示。 例如 <prosody pitch="+80Hz">some text</prosody> 或 <prosody pitch="-2st">some text</prosody> 。 “st”表示变化单位为半音,即,标准全音阶中的半调(半步)。以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody pitch="50%">some text</prosody> 或 <prosody pitch="-50%">some text</prosody> 。常量值:x-lowlow中highx-highdefault |
可选 |
rate |
指示文本的讲出速率。 可在字词或句子层面应用语速。 速率变化应为原始音频的 0.5 到 2 倍。 可将 rate 表述为:相对值:以相对数字表示:以充当默认值乘数的数字表示。 例如,如果值为 1 ,则原始速率不会变化。 如果值为 0.5 ,则速率为原始速率的一半。 如果值为 2 ,则速率为原始速率的 2 倍。以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody rate="50%">some text</prosody> 或 <prosody rate="-50%">some text</prosody> 。常量值:x-slowslow中fastx-fastdefault |
可选 |
volume |
指示语音的音量级别。 可在句子层面应用音量的变化。 可将音量表示为:绝对值:以从 0.0 到 100.0 (从最安静到最大声,例如 75 )的数字表示。 默认值为 100.0 。相对值:以相对数字表示:以前面带有“+”或“-”的数字表示,指定音量的变化量。 例如 +10 或 -5.5 。以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody volume="50%">some text</prosody> 或 <prosody volume="+3%">some text</prosody> 。常量值:silentx-softsoft中loudx-louddefault |
可选 |
进阶用法通过SSML改进合成
详细请参考官网:https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/speech-synthesis-markup-structure
MSSpeech.speakSsml(string)
停止合成与播放
MSSpeech.stopSpeak();
设置播放回调
MSSpeech.registCallback({
started: () => {
console.log("started");
},
completed: () => {
console.log("completed");
},
canceled: () => {
console.log("canceled");
},
});
SSML文档结构
SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 语音服务支持的元素可能与 W3C 标准不同。
每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。
下面是 SSML 文档的基本结构和语法的子集:
XML
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="string">
<mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>
<voice name="string" effect="string">
<audio src="string"></audio>
<bookmark mark="string"/>
<break strength="string" time="string" />
<emphasis level="value"></emphasis>
<lang xml:lang="string"></lang>
<lexicon uri="string"/>
<math xmlns="http://www.w3.org/1998/Math/MathML"></math>
<mstts:audioduration value="string"/>
<mstts:ttsembedding speakerProfileId="string"></mstts:ttsembedding>
<mstts:express-as style="string" styledegree="value" role="string"></mstts:express-as>
<mstts:silence type="string" value="string"/>
<mstts:viseme type="string"/>
<p></p>
<phoneme alphabet="string" ph="string"></phoneme>
<prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>
<s></s>
<say-as interpret-as="string" format="string" detail="string"></say-as>
<sub alias="string"></sub>
</voice>
</speak>
以下列表描述了每个元素中允许的一些内容示例:
audio
:如果音频文件不可用或不可播放,可在audio
元素的正文中包含可讲述的纯文本或 SSML 标记。audio
元素还包含文本和以下元素:audio
、break
、p
、s
、phoneme
、prosody
、say-as
和sub
。bookmark
:此元素不能包含文本或任何其他元素。break
:此元素不能包含文本或任何其他元素。emphasis
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。lang
:此元素可包含除mstts:backgroundaudio
、voice
和speak
以外的所有其他元素。lexicon
:此元素不能包含文本或任何其他元素。math
:此元素只能包含文本和 MathML 元素。mstts:audioduration
:此元素不能包含文本或任何其他元素。mstts:backgroundaudio
:此元素不能包含文本或任何其他元素。mstts:embedding
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。mstts:express-as
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。mstts:silence
:此元素不能包含文本或任何其他元素。mstts:viseme
:此元素不能包含文本或任何其他元素。p
:此元素可包含文本和以下元素:audio
、break
、phoneme
、prosody
、say-as
、sub
、mstts:express-as
和s
。phoneme
:此元素只能包含文本,不能包含任何其他元素。prosody
:此元素可包含文本和以下元素:audio
、break
、p
、phoneme
、prosody
、say-as
、sub
和s
。s
:此元素可包含文本和以下元素:audio
、break
、phoneme
、prosody
、say-as
、mstts:express-as
和sub
。say-as
:此元素只能包含文本,不能包含任何其他元素。sub
:此元素只能包含文本,不能包含任何其他元素。speak
:SSML 文档的根元素。 此元素可包含以下元素:mstts:backgroundaudio
和voice
。voice
:此元素可包含除mstts:backgroundaudio
和speak
以外的所有其他元素。
语音服务可自动适当处理停顿(例如,在句号后面暂停片刻),或者在以问号结尾的句子中使用正确的音调。