uin-app/tts文字转语音(可实现支付成功语音播报)

1.插件介绍

MT-TTS离线语音合成MT-TTS离线语音合成icon-default.png?t=N7T8https://ext.dcloud.net.cn/plugin?id=3682

1.1 下载

直接下载离线打包,导入项目中

2.使用

   2.1 下载,解压,打开hbuiderx中的项目,项目目录下创建 nativeplugins 文件夹,把解压的文件MT-TTS放到 nativeplugins 文件夹下。
 

2.2  在 manifest.json 中配置App原生插件配置,找到勾选,确认即可。

 2.3 在页面中使用
<template>
    <nut-button type="primary" @click="speakText">支付</nut-button>
    <nut-button type="primary" @click="speakText1">我是ikun</nut-button>
</template>
<script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app';

 // 引入插件
const TTSSpeech = uni.requireNativePlugin('MT-TTS-Speech');

// 支付事件
const speakText = () => {
  const money = 100.15;
  TTSSpeech.setPitch(100);//设置语调  0-100, 默认 50
  TTSSpeech.setSpeed(50); // 设置语速 0-100, 默认 50
  TTSSpeech.speak({
    text: `已收款${money}元`,
  });
};

const speakText1 = () => {
  TTSSpeech.setPitch(100);//设置语调  0-100, 默认 50
  TTSSpeech.setSpeed(50); // 设置语速
  TTSSpeech.speak({
    text: `我是爱坤!哎呀~你干嘛`,
  });
};

onLoad(() => {
// 初始化TTS引擎
TTSSpeech.init((status: number) => {
  if (status === 0) {
    console.log('TTS引擎初始化成功');
  } else {
    console.error('TTS引擎初始化失败,状态码:', status);
  }

// 我自己用的  科大讯飞语音引擎,所以代码中用的是  com.iflytek.speechcloud
//'com.iflytek.speechcloud',安装不同的安卓语音引擎,对应的包名都不同。
//  调用安卓系统已安装的TTS进行语音合成播放
}, 'com.iflytek.speechcloud'); 
})
</script>

安卓语音引擎包名种类

在插件文档中查看, 我自己用的  科大讯飞语音引擎,所以代码中用的是  com.iflytek.speechcloud

2.4 自定义基座  注意!!!!

在开发测试时候,一定要自定义开发基座,要不然也不能正常使用。正常打包的时候,选择正式打包就行!!!!

2.4.1 打开制作自定义基座页面

2.4.2 按照我图中的选择就可以 

 2.4.3 出现 这个就已经成功

2.4.4  项目运行时,选择自定义基座运行

 !!!!注意:到这里插件代码已完成,是不是觉得已经可以了,但是点击后发现没有声音。原因是没有安装安卓的语音引擎tts。

3. 安卓语音引擎

科大讯飞语音引擎3.0icon-default.png?t=N7T8https://pan.baidu.com/s/1h9HoczdQMx8aigeaQV7IhA?pwd=o4m2

安装完后,科大讯飞引擎3.0安装后的名字叫:语音设置。 安装后就有声音了

### 如何在 UniApp 中集成科大讯飞的语音识别功能 要在 UniApp 中集成科大讯飞的语音识别 API 或插件,可以通过以下方式实现: #### 1. 使用 WebAPI 接口 科大讯飞提供了强大的 WebAPI 接口来支持实时语音文字的功能[^1]。开发者可以在 Vue.js 环境下利用这些接口完成语音识别的任务。然而,在 UniApp 开发环境中需要注意的是,`uni.getRecorderManager()` 方法的行为因平台不同而有所差异。具体来说,App 端不支持 `onFrameRecorded` 回调函数,因此需要采用替代方法。 一种常见的解决方案是先录制音频文件,再将其换为 Base64 编码格式,并分片上传至科大讯飞的服务端进行处理[^2]。以下是具体的代码示例: ```javascript // 录制音频并上传到科大讯飞服务端 const recorderManager = uni.getRecorderManager(); let tempFilePath; recorderManager.onStart(() => { console.log('录音开始'); }); recorderManager.onStop((res) => { tempFilePath = res.tempFilePath; uploadAudioToIflytek(tempFilePath); }); function uploadAudioToIflytek(filePath) { const fs = require('fs'); const fileContent = fs.readFileSync(filePath, { encoding: 'base64' }); // 将 base64 数据分割成多个片段发送给科大讯飞服务器 let chunkSize = 1024 * 10; // 每次上传的数据大小 (字节) for (let i = 0; i < fileContent.length; i += chunkSize) { let chunk = fileContent.slice(i, i + chunkSize); // 调用科大讯飞的语音识别接口 callIflytekApi(chunk).then(response => { console.log('部分语音识别结果:', response); }).catch(error => { console.error('错误:', error); }); } } async function callIflytekApi(dataChunk) { const url = 'https://api.iflytek.com/voice-to-text'; // 替换为实际的科大讯飞 API 地址 const options = { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_ACCESS_TOKEN', // 需要替换为你自己的访问令牌 'Content-Type': 'application/octet-stream' }, body: dataChunk }; const response = await fetch(url, options); return await response.json(); } ``` 上述代码展示了如何通过录制音频文件、读取其内容并逐片上传的方式与科大讯飞交互。 #### 2. 权限管理 在应用运行过程中可能会遇到权限不足的情况,比如缺少录音权限。此时需引导用户手动授予必要的权限。如果没有录音权限,则会在尝试启动录音时抛出异常。解决办法是在设备设置中开启对应的应用程序权限[^3]。 #### 3. 实现流式输出效果 为了达到更佳的用户体验,可以考虑实现实时的文字显示功能。这通常涉及前端界面更新逻辑以及后台持续接收数据的能力。借助于 WebSocket 技术或者其他长连接机制能够进一步优化这一过程。 --- ###
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值