uniapp安卓端实现语音合成播报

最初尝试使用讯飞语音合成方式,能获取到语音数据,但是数据是base64格式的,在安卓端无法播放,网上有说通过转成blob格式的url可以播放,但是uniapp不支持转换的api;于是后面又想其他办法,使用安卓插件播报原生安卓语音播报插件 - DCloud 插件市场

方案一(讯飞语音合成)

1.在讯飞后台注册登录获得APPID等信息  讯飞语音合成控制台

2.在项目根目录使用npm安装crypto-js

npm i crypto-js

3.新建xunfei.js文件,替换讯飞的APPID等3个配置

// 讯飞语音合成api文档	https://www.xfyun.cn/doc/tts/online_tts/API.html
import CryptoJS from 'crypto-js'
import {Base64} from './base64.js';

const APPID = "替换自己的APPID";
const API_SECRET = "替换自己的API_SECRET";
const API_KEY = "替换自己的API_KEY";

const URL = "wss://tts-api.xfyun.cn/v2/tts"
const HOST = "tts-api.xfyun.cn"

function getWssUrl(date) {
	date = date||(new Date().toGMTString())
	let signatureOrigin = `host: ${HOST}\ndate: ${date}\nGET /v2/tts HTTP/1.1`
	let signatureSha = CryptoJS.HmacSHA256(signatureOrigin, API_SECRET)
	let signature = CryptoJS.enc.Base64.stringify(signatureSha)
	let authorizationOrigin = `api_key="${API_KEY}", algorithm="hmac-sha256", headers="host date request-line", signature="${signature}"`
	let authStr = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(authorizationOrigin))
	return URL + "?authorization=" + authStr + "&date=" + date + "&host=" + HOST
	
}
const wssUrl=getWssUrl()
// console.log("讯飞语音合成wssUrl",wssUrl)

export const speak = (word) => {
	if (!word) {return}
	const socketTask=uni.connectSocket({
		url: wssUrl,
		success: res=> {
			console.log("讯飞websocket连接成功",res);
	
### UniApp实现 APP 的文字转语音播报功能 在 UniApp 开发环境中,可以通过集成第三方 SDK 或者调用云服务来实现文字转语音(TTS, Text To Speech)的功能。对于 Android 和 iOS 平台来说,通常会选择平台自带的支持或是像科大讯飞这样的专业 TTS 提供商的服务。 #### 使用原生组件 `voice` 实现基础的文字转语音播放 如果不需要特别高质量的声音合成效果,可以考虑使用 UniApp 的内置能力——通过 `<voice>` 组件配合 uni-app API 来完成简单的 TTS 功能: ```html <template> <view class="content"> <!-- 输入框 --> <input type="text" v-model="textToSpeak"/> <!-- 按钮触发朗读 --> <button @click="speakText">点击朗读</button> <!-- voice 组件用于实际发声 --> <voice id="myVoice"></voice> </view> </template> <script> export default { data() { return { textToSpeak: '你好,世界' } }, methods: { speakText() { const options = { content: this.textToSpeak, success(res) { console.log('success', res); }, fail(err) { console.error('fail', err); } }; // 调用uni.startSpeech方法启动语音播放 uni.startSpeech(options); } } } </script> ``` 这段代码展示了如何利用 UniApp 自带的能力快速搭建起一个简易版的文字转语音应用[^1]。 然而,在生产环境下推荐使用更专业的解决方案如科大讯飞提供的 SDK,因为这些方案往往提供了更好的音质、更多的发音选项以及更高的稳定性。 #### 集成科大讯飞 TTS SDK 为了获得更加自然流畅的语音合成功能,建议引入科大讯飞的 TTS SDK。这需要开发者先注册成为其用户并获取相应的 AppId 及其他必要参数。之后按照官方文档指引安装对应的 SDK 文件到项目当中去,并编写必要的初始化逻辑与接口调用来驱动 TTS 工作流程。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值