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);
		},
		fail: err=>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值