当前位置: 首页 > news >正文

UNIAPP发布小程序调用讯飞在线语音合成+实时播报

语音合成能够将文字转化为自然流畅的人声,提供100+发音人供您选择,支持多语种、多方言和中英混合,可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。

在当下大模型火爆的今日,语音交互页离不开语音合成的加入。

源码如下:

<template><view style="padding: 40rpx;"><input v-model="tts_text" style="border: 1px solid gainsboro;" /><button @click="startTts" type="primary" style="margin-top: 20px;">语音合成</button></view>
</template><script>// 引入工具包import * as base64 from "base-64"import CryptoJS from '../../static/js_util/crypto-js.js'import * as utf8 from "utf8"import {Buffer} from 'buffer'export 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); // 主要是返回地址});}}}
</script><style></style>

http://www.lryc.cn/news/485845.html

相关文章:

  • 跳房子(弱化版)
  • ubuntu22 安装 minikube
  • STM32 | 超声波避障小车
  • 打造旅游卡服务新标杆:构建SOP框架与智能知识库应用
  • 通过脚本,发起分支合并请求和打tag
  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...
  • 网络安全在线网站/靶场:全面探索与实践
  • Ceph 中Crush 算法的理解
  • D70【 python 接口自动化学习】- python 基础之数据库
  • C# LINQ数据访问技术
  • 【JavaSE线程知识总结】
  • FreeRTOS内存管理
  • 利用服务工作线程serviceWorker缓存静态文件css,html,js,图片等的方法,以及更新和删除及版本控制
  • MuMu模拟器安卓12安装Xposed 框架
  • 高级数据结构——hash表与布隆过滤器
  • 【网络】什么是交换机?switch
  • 软件测试 —— 自动化基础
  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构
  • 排序算法(基础)大全
  • Pytest从入门到精通
  • 《C++ 实现生成多个弹窗程序》
  • react 中 useRef Hook 作用
  • Scala-键盘输入(StdIn)-用法详解
  • 力扣(LeetCode)283. 移动零(Java)
  • ESP32C3单片机使用笔记---烧录MicroPython
  • Matter1.4重磅来袭,智能家居进入“互联”新纪元
  • tdengine学习笔记
  • 机器学习-36-对ML的思考之机器学习研究的初衷及科学研究的期望
  • Linux 进程信号的产生