Appearance
开启流式语音合成
方法名
startCosyVoiceStreamInputTts
用法
- 用法如下:
js
//合成的文本列表
let sentences = this.form.text.split("\n");
module.startCosyVoiceStreamInputTts({
params: {
// 注意!!!不要在端侧使用长效API Key!!!
// 注意!!!不要在端侧使用长效API Key!!!
// 注意!!!不要在端侧使用长效API Key!!!
// 将长效API Key硬编码在端侧代码中,会导致安全风险!!!
// 请在自建服务端获得临时鉴权Token(有效期60s,最长可设置1800s),再下发到端侧进行使用。
// 临时鉴权Token: https://help.aliyun.com/zh/model-studio/obtain-temporary-authentication-token
//
// 服务只需要在临时Token(API Key)快过期前刷新一次。各端侧在Token(API Key)快过期前从服务获得新的
// 临时Token(API Key)。
apikey: AppConfig.dashApiKey,
//自定义sessionId
sessionId: "",
//合成的文本列表
sentences: sentences,
//是否保存音频文件
saveAudio: this.form.saveAudio,
//音频文件保存目录,可以为空
audioDir: "/storage/emulated/0/alyNui/audio",
//文件保存类型
saveType: this.form.format,
//url
url: AppConfig.dashUrl,
//必填, 推荐填入具有唯一性的id, 方便定位问题
deviceId: "empty_device_id",
//debug目录
debugDir: "/storage/emulated/0/alyNui/debug",
//设置本地存储日志文件的最大字节数, 最大将会在本地存储2个设置字节大小的日志文件
maxLogFileSize: 50 * 1024 * 1024,
//模型
model: this.form.model,
// 流式文本语音合成发音人:
// V3/V2/V1发音人有差异,且并不是所有发音人均支持SSML,详尽信息请查看说明文档。
// 部分发音人需要申请开通。
// 语音合成CosyVoice-V3/V2/V1大模型发音人:
// https://help.aliyun.com/zh/model-studio/cosyvoice-websocket-api
// 复刻的音色:
// https://help.aliyun.com/zh/model-studio/cosyvoice-clone-api
//说话人音色
voice: this.form.voice,
/**
* 音频编码格式。
* 所有模型均支持的编码格式:pcm、wav和mp3(默认)
* 除cosyvoice-v1外,其他模型支持的编码格式:opus
* 音频格式为opus时,支持通过bit_rate参数调整码率。
* */
format: this.form.format,
//是否打开内部解码器,若设置mp3/opus格式, 可enable_audio_decoder打开内部解码器, 将mp3/opus编码成pcm
enableAudioDecoder: this.form.format == "mp3" || this.form.format == "opus",
/**
* 音频采样率,支持下述采样率(单位:Hz):
* 8000, 16000, 22050(默认), 24000, 44100, 48000。
* */
sampleRate: 24000,
//朗读音量,范围是0~100,默认50
volume: this.form.volume,
/**
* 合成音频的语速,取值范围:0.5~2。
* 0.5:表示默认语速的0.5倍速。
* 1:表示默认语速。默认语速是指模型默认输出的合成语速,语速会依据每一个音色略有不同,约每秒钟4个字。
* 2:表示默认语速的2倍速。
* 默认值:1.0。
* */
speechRate: this.form.speechRate,
/**
* 合成音频的语调,取值范围:0.5~2。
* 默认值:1.0。
* */
pitchRate: this.form.pitchRate,
//更多参数请参考插件文档
},
//成功执行的函数
success: (res) => {
console.log(res)
let data = res.data;
if (data && data.eventName == "STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE" && data.audioFilePath) {
let audioFilePath = data.audioFilePath;
uni.showToast({
title: "文件保存路径:" + audioFilePath,
icon: "none",
duration: 5000
})
}
},
//失败执行的函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
// complete: (res) => {
// console.log(res)
// }
})js
//合成的文本列表
const sentences = text.value.split("\n");
module.startCosyVoiceStreamInputTts({
params: {
// 注意!!!不要在端侧使用长效API Key!!!
// 注意!!!不要在端侧使用长效API Key!!!
// 注意!!!不要在端侧使用长效API Key!!!
// 将长效API Key硬编码在端侧代码中,会导致安全风险!!!
// 请在自建服务端获得临时鉴权Token(有效期60s,最长可设置1800s),再下发到端侧进行使用。
// 临时鉴权Token: https://help.aliyun.com/zh/model-studio/obtain-temporary-authentication-token
//
// 服务只需要在临时Token(API Key)快过期前刷新一次。各端侧在Token(API Key)快过期前从服务获得新的
// 临时Token(API Key)。
apikey: AppConfig.dashApiKey,
//自定义sessionId
sessionId: "",
//合成的文本列表
sentences: sentences,
//是否保存音频文件
saveAudio: saveAudio.value,
//音频文件保存目录,可以为空
audioDir: "/storage/emulated/0/alyNui/audio",
//文件保存类型
saveType: format.value,
//url
url: AppConfig.dashUrl,
//必填, 推荐填入具有唯一性的id, 方便定位问题
deviceId: "empty_device_id",
//debug目录
debugDir: "/storage/emulated/0/alyNui/debug",
//设置本地存储日志文件的最大字节数, 最大将会在本地存储2个设置字节大小的日志文件
maxLogFileSize: 50 * 1024 * 1024,
//模型
model: model.value,
// 流式文本语音合成发音人:
// V3/V2/V1发音人有差异,且并不是所有发音人均支持SSML,详尽信息请查看说明文档。
// 部分发音人需要申请开通。
// 语音合成CosyVoice-V3/V2/V1大模型发音人:
// https://help.aliyun.com/zh/model-studio/cosyvoice-websocket-api
// 复刻的音色:
// https://help.aliyun.com/zh/model-studio/cosyvoice-clone-api
//说话人音色
voice: voice.value,
/**
* 音频编码格式。
* 所有模型均支持的编码格式:pcm、wav和mp3(默认)
* 除cosyvoice-v1外,其他模型支持的编码格式:opus
* 音频格式为opus时,支持通过bit_rate参数调整码率。
* */
format: format.value,
//是否打开内部解码器,若设置mp3/opus格式, 可enable_audio_decoder打开内部解码器, 将mp3/opus编码成pcm
enableAudioDecoder: format.value == "mp3" || format.value == "opus",
/**
* 音频采样率,支持下述采样率(单位:Hz):
* 8000, 16000, 22050(默认), 24000, 44100, 48000。
* */
sampleRate: 24000,
//朗读音量,范围是0~100,默认50
volume: volume.value,
/**
* 合成音频的语速,取值范围:0.5~2。
* 0.5:表示默认语速的0.5倍速。
* 1:表示默认语速。默认语速是指模型默认输出的合成语速,语速会依据每一个音色略有不同,约每秒钟4个字。
* 2:表示默认语速的2倍速。
* 默认值:1.0。
* */
speechRate: speechRate.value,
/**
* 合成音频的语调,取值范围:0.5~2。
* 默认值:1.0。
* */
pitchRate: pitchRate.value,
//更多参数请参考插件文档
},
//成功执行的函数
success: (res) => {
// console.log(res)
const data = res.data;
const eventName = data.getString("eventName")
const audioFilePath = data.getString("audioFilePath")
if (eventName == "STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE" && audioFilePath != null) {
uni.showToast({
title: "文件保存路径:" + audioFilePath,
icon: "none",
duration: 5000
})
}
},
//失败执行的函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
// complete: (res) => {
// console.log(res)
// }
} as LevenOptions)- 参数说明
参数名 参数类型 是否必填 默认值 参数描述 params Object 是 无 接口请求参数 params.apikey String 是 无 临时Token params.sessionId String 否 无 自定义sessionId params.sentences String[] 是 无 合成的文本列表 params.saveAudio Boolean 否 false 是否保存音频文件 params.audioDir String 是 无 音频文件保存目录,可以为空 params.saveType String 否 无 文件保存类型,可选值: pcmwavparams.url String 是 无 请求地址 params.deviceId String 是 无 必填, 推荐填入具有唯一性的id, 方便定位问题 params.debugDir String 否 无 debug目录 params.maxLogFileSize Integer 否 无 设置本地存储日志文件的最大字节数, 最大将会在本地存储2个设置字节大小的日志文件 params.model String 否 无 模型选择, 注意模型对应的采样率要求 params.voice String 否 无 流式文本语音合成发音人, V3/V2/V1发音人有差异,且并不是所有发音人均支持SSML,详尽信息请查看说明文档
部分发音人需要申请开通
语音合成CosyVoice-V3/V2/V1大模型发音人:https://help.aliyun.com/zh/model-studio/cosyvoice-websocket-api
复刻的音色:https://help.aliyun.com/zh/model-studio/cosyvoice-clone-apiparams.format String 否 无 所有模型均支持的编码格式:pcm、wav和mp3(默认),除cosyvoice-v1外,其他模型支持的编码格式:opus,音频格式为opus时,支持通过bit_rate参数调整码率 params.enableAudioDecoder Boolean 否 false 是否打开内部解码器,若设置mp3/opus格式, 可enable_audio_decoder打开内部解码器, 将mp3/opus编码成pcm params.sampleRate Integer 否 22050 音频采样率,默认值:16000Hz。根据音频采样率在管控台对应项目中配置支持该采样率及场景的模型,可选值:8000, 16000, 22050(默认), 24000, 44100, 48000 params.volume Integer 否 50 朗读音量,范围是0~100,默认50 params.speechRate Float 否 1.0 合成音频的语速,取值范围:0.5~2 params.pitchRate Float 否 1.0 合成音频的语调,取值范围:0.5~2 params.bitRate Integer 否 无 指定音频的码率,取值范围:6~510kbps,码率越大,音质越好,音频文件体积越大,仅在音频格式(format)为opus时可用,cosyvoice-v1模型不支持该参数 params.seed Integer 否 无 成时使用的随机数种子,使合成的效果产生变化。默认值0。取值范围:0~65535,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能 params.style Integer 否 无 调整风格。默认值0。取值应为大于等于0的整数,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能 params.instruction String 否 无 设置提示词,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能,目前仅支持设置情感。格式:“你说话的情感是<情感值>。” 支持的情感值:Neutral、Fearful、Angry、Sad、Surprised、Happy、Disgusted。 params.languageHints Array[String] 否 无 设置合成语种,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能。当前只支持同时配置一个语种,取值范围:"zh":中文,"en":英文 success Function 否 无 执行成功的函数 fail Function 否 无 执行失败的函数 complete Function 否 无 执行完成的函数,不管成功还是失败都会执行
回调
- 示例
json
{
"data": {
"type": "startSuccess"
},
"message": "",
"code": 0
}json
{
"data": {
"type": "playStart"
},
"message": "",
"code": 0
}json
{
"data": {
"type": "playOver"
},
"message": "",
"code": 0
}json
{
"data": {
"errorMsg": "Gateway:SUCCESS:Success.",
"taskId": "042ee4f7c4bd4fab91815c705e26644e",
"timestamp": "",
"allResponse": "{\"header\":{\"namespace\":\"FlowingSpeechSynthesizer\",\"name\":\"SynthesisStarted\",\"status\":20000000,\"message_id\":\"2b6b2e5bf67a4a30957ee96447fcfe33\",\"task_id\":\"042ee4f7c4bd4fab91815c705e26644e\",\"status_text\":\"Gateway:SUCCESS:Success.\"}}",
"type": "onStreamInputTtsEventCallback",
"eventName": "STREAM_INPUT_TTS_EVENT_SYNTHESIS_STARTED",
"retCode": 20000000,
"sessionId": "",
"audioFilePath": "/storage/emulated/0/alyNui/audio/tts_task_id_042ee4f7c4bd4fab91815c705e26644e.pcm",
"eventCode": 0
},
"message": "",
"code": 0
}- 回调说明:
参数名 参数类型 参数描述 message String 消息提示 data Object 数据对象 data.type String 回调类型: startSuccess:开启成功playStart:开始播放playOver:结束播放onStreamInputTtsEventCallback:流式语音合成回调data.errorMsg String 错误类型 data.taskId String 任务id data.timestamp String 时间戳 data.allResponse String 响应数据 data.eventName String 回调事件类型 data.retCode String - data.sessionId String 自定义sessionId data.audioFilePath String 音频保存本地文件路径 data.eventCode String 回调事件code值 code Integer 返回类型,0.成功,其他:失败
