企业招聘网站大全免费,基于 wordpress,网站制作的原因,网站源码 后台语音合成能够将文字转化为自然流畅的人声#xff0c;提供100发音人供您选择#xff0c;支持多语种、多方言和中英混合#xff0c;可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。
在当下大模型火爆的今日#xff0c;语音交互页离不开语音合…语音合成能够将文字转化为自然流畅的人声提供100发音人供您选择支持多语种、多方言和中英混合可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。
在当下大模型火爆的今日语音交互页离不开语音合成的加入。 源码如下
templateview stylepadding: 40rpx;input v-modeltts_text styleborder: 1px solid gainsboro; /button clickstartTts typeprimary stylemargin-top: 20px;语音合成/button/view
/templatescript// 引入工具包import * as base64 from base-64import CryptoJS from ../../static/js_util/crypto-js.jsimport * as utf8 from utf8import {Buffer} from bufferexport default {data() {return {// 讯飞开放平台获取wssTask: , // ws连接任务url: wss://tts-api.xfyun.cn/v2/tts,host: tts-api.xfyun.cn,sub: /v2/tts,appid: ,api_secret: ,api_key: ,tts_text: , //合成文本vcn: xiaoyan, // 发音人buff: [],innerAudioContext: uni.createInnerAudioContext(),}},methods: {async startTts() {this.buff []let myUrl await this.getWebSocketUrl();let realThis this;this.socketTask uni.connectSocket({url: myUrl,method: GET,success: res {console.log(res, ws成功连接..., myUrl)}})realThis.socketTask.onError((res) {console.log(连接发生错误, res)})// 发送合成参数realThis.socketTask.onOpen((res) {console.info(wss的onOpen成功执行..., res)// 第一帧..........................................console.log(open成功...)let params {common: {app_id: realThis.appid},business: {aue: lame,sfl: 1,tte: UTF8,ent: intp65,vcn: realThis.vcn,pitch: 50,speed: 50},data: {status: 2,text: Buffer.from(realThis.tts_text).toString(base64)}};// 发送数据});// 接受到消息时realThis.socketTask.onMessage((res) {console.log(收到API返回的内容, res.data);let res_data JSON.parse(res.data)// console.log(我打印的JSON.stringify(res_data.data))// 解码音频数据let audioData res_data.data.audio;console.log(我打印的 JSON.stringify(audioData))realThis.buff.push(audioData)if (res_data.data.status 2) { // 仅合成完毕一次请求播放realThis.playAudio(0); //开始播放音频//状态为2才表示合成结束需要合并 realThis.socketTask.close({success(res) {console.log(ws关闭成功---正常关闭, res)},fail(err) {console.log(关闭失败, err)}})}})},// 播放音频playAudio(cur) {// 可以模拟实时播报},// 鉴权getWebSocketUrl() {return new Promise((resolve, reject) {// 请求地址根据语种不同变化var url this.url;var host this.host;var apiKeyName api_key;var date new Date().toGMTString();var algorithm hmac-sha256;var headers host date request-line;var signatureOrigin host: ${host}\ndate: ${date}\nGET ${this.sub} HTTP/1.1;var signatureSha CryptoJS.HmacSHA256(signatureOrigin, this.api_secret);var signature CryptoJS.enc.Base64.stringify(signatureSha);var authorizationOrigin ${apiKeyName}${this.api_key}, algorithm${algorithm}, headers${headers}, signature${signature};var authorization base64.encode(authorizationOrigin);url ${url}?authorization${authorization}date${encodeURI(date)}host${host};// console.log(url)resolve(url); // 主要是返回地址});}}}
/scriptstyle/style