Skip to content

开启流式语音合成

方法名

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)
  • 参数说明
    参数名参数类型是否必填默认值参数描述
    paramsObject接口请求参数
    params.apikeyString临时Token
    params.sessionIdString自定义sessionId
    params.sentencesString[]合成的文本列表
    params.saveAudioBooleanfalse是否保存音频文件
    params.audioDirString音频文件保存目录,可以为空
    params.saveTypeString文件保存类型,可选值:pcm wav
    params.urlString请求地址
    params.deviceIdString必填, 推荐填入具有唯一性的id, 方便定位问题
    params.debugDirStringdebug目录
    params.maxLogFileSizeInteger设置本地存储日志文件的最大字节数, 最大将会在本地存储2个设置字节大小的日志文件
    params.modelString模型选择, 注意模型对应的采样率要求
    params.voiceString流式文本语音合成发音人, 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
    params.formatString所有模型均支持的编码格式:pcm、wav和mp3(默认),除cosyvoice-v1外,其他模型支持的编码格式:opus,音频格式为opus时,支持通过bit_rate参数调整码率
    params.enableAudioDecoderBooleanfalse是否打开内部解码器,若设置mp3/opus格式, 可enable_audio_decoder打开内部解码器, 将mp3/opus编码成pcm
    params.sampleRateInteger22050音频采样率,默认值:16000Hz。根据音频采样率在管控台对应项目中配置支持该采样率及场景的模型,可选值:8000, 16000, 22050(默认), 24000, 44100, 48000
    params.volumeInteger50朗读音量,范围是0~100,默认50
    params.speechRateFloat1.0合成音频的语速,取值范围:0.5~2
    params.pitchRateFloat1.0合成音频的语调,取值范围:0.5~2
    params.bitRateInteger指定音频的码率,取值范围:6~510kbps,码率越大,音质越好,音频文件体积越大,仅在音频格式(format)为opus时可用,cosyvoice-v1模型不支持该参数
    params.seedInteger成时使用的随机数种子,使合成的效果产生变化。默认值0。取值范围:0~65535,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能
    params.styleInteger调整风格。默认值0。取值应为大于等于0的整数,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能
    params.instructionString设置提示词,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能,目前仅支持设置情感。格式:“你说话的情感是<情感值>。” 支持的情感值:Neutral、Fearful、Angry、Sad、Surprised、Happy、Disgusted。
    params.languageHintsArray[String]设置合成语种,仅cosyvoice-v3、cosyvoice-v3-plus支持该功能。当前只支持同时配置一个语种,取值范围:"zh":中文,"en":英文
    successFunction执行成功的函数
    failFunction执行失败的函数
    completeFunction执行完成的函数,不管成功还是失败都会执行

回调

  • 示例
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
}
  • 回调说明:
    参数名参数类型参数描述
    messageString消息提示
    dataObject数据对象
    data.typeString回调类型:
    startSuccess:开启成功
    playStart:开始播放
    playOver:结束播放
    onStreamInputTtsEventCallback:流式语音合成回调
    data.errorMsgString错误类型
    data.taskIdString任务id
    data.timestampString时间戳
    data.allResponseString响应数据
    data.eventNameString回调事件类型
    data.retCodeString-
    data.sessionIdString自定义sessionId
    data.audioFilePathString音频保存本地文件路径
    data.eventCodeString回调事件code值
    codeInteger返回类型,0.成功,其他:失败