您的当前位置:首页>全部文章>文章详情

【UniApp】UniApp原生讯飞语音插件-YL-SpeechRecognition

CrazyPanda发表于:2023-12-07 14:29:07浏览:424次TAG:

b5a77db0cdbd436188c23d52d8838748.png

由于插件文档图片部分可能无法显示,可以移步到CSDN博客,查看完整文档:https://blog.csdn.net/baiyuliang2013/article/details/130925332

插件说明:

支持安卓IOS双端!

新版本已由必须联系本人打离线包,升级为线上购买后自主导入sdk打包,更方便快捷!当然,您在使用时遇到问题依然可以联系本人QQ:453503875,微信:同qq。

若您只需要安卓端,可使用:Uts版插件:https://ext.dcloud.net.cn/plugin?id=14794,此插件同样支持线上购买,自行替换讯飞sdk打包,方便快捷!

如果,您有其它语音相关需求,如唤醒,评测等,或者有其它插件定制需求,仍然可以联系本人!

插件使用说明:

1.先从讯飞官网下载sdk:

1).
在这里插入图片描述
2).

在这里插入图片描述

2.购买并选择导入项目后,配置原生插件:

在这里插入图片描述

3.在项目根目录创建原生插件目录(文件夹名称保持一致),将自己下载的讯飞sdk导入:

在这里插入图片描述

  • nativeplugins

    • android
      -libs

    • ios

    • 安卓sdk

    • iosSDK

    • YL-SpeechRecognition

安卓的sdk放入YL-SpeechRecognition/android/libs目录下,ios的framework放入YL-SpeechRecognition/ios目录下,文件夹名称一定要保持一致!!!

4.打自定义基座调试,或云打包发行!

1.使用方法:

  • 1.引入插件:

const sr = uni.requireNativePlugin("YL-SpeechRecognition")
  • 2.初始化(注意:科大讯飞的appid,需要自己去科大讯飞官网申请)

//初始化
sr.init("6005f95c");//体验测试阶段可以使用demo的,正式发布需要替换为自己的
//创建文字转语音对象
sr.createTts(code => {}); 
//创建语音转文字对象
sr.createIat(code => {});
  • 3.语音合成:

sr.textToVoice(text,res=>{})
  • 4.语音听写:

sr.voiceToText(res=>{})
  • 5.停止方法

sr.stopSpeaking();//停止语音合成sr.stopListening();//停止语音听写12
  • 6.销毁:(退出页面前销毁)

sr.destroy();
  • 7.其它可供调用的方法:

//语音合成
sr.setSpeaker("aisjiuxu");//设置发音人(可能收费,自己在讯飞后台配置)
sr.pauseSpeaking();//暂停
sr.resumeSpeaking();//恢复
sr.getTtsPath(path=>{});//获取语音文件路径

//语音听写
sr.stopListening();//停止
sr.setVadBos(10 * 1000);//设置语音听写前端点超时时间ms(最大10s,一般按默认即可)
sr.setVadEos(10 * 1000);//设置语音听写后端点超时时间ms(最大10s,一般按默认即可)
sr.setLanguage("");//设置听写语言,默认中文(zh_cn,en_us)
sr.getIatPath(path=>{});//获取语音文件路径

代码示例:

<template>
	<div style="padding: 20rpx;">
		<text style="display: block;margin-bottom: 20rpx;font-size: 20rpx;color: #FF0000;">文字转语音:</text>
		<text>{{text}}</text>
		<div style="display: flex;flex-direction: row;margin-top: 20rpx;">
			<text style="font-size: 20rpx;">状态:</text>
			<text style="margin-bottom: 20rpx;color: #FF0000;font-size: 20rpx;">{{toVoiceStatus}}</text>
		</div>
		<button type="primary" style="margin: 20rpx 0;" plain="true" @click="textToVoice()">语音朗读</button>
		<div style="display: flex;align-items: center;justify-content: space-between;flex-direction: row;">
			<button type="warn" plain="true" @click="stopSpeaking()" style="width: 160rpx;">停止</button>
			<button type="primary" plain="true" @click="pauseSpeaking()" style="width: 160rpx;">暂停</button>
			<button type="primary" plain="true" @click="resumeSpeaking()" style="width: 160rpx;">继续</button>
		</div>

		<text
			style="display: block;margin-top: 50rpx;;margin-bottom: 20rpx;font-size: 20rpx;color: #FF0000;">语音转文字:</text>
		<text style="display: block;margin-bottom: 20rpx;">{{transText}}</text>
		<div style="display: flex;flex-direction: row;">
			<text style="font-size: 20rpx;">状态:</text>
			<text style="margin-bottom: 20rpx;color: #FF0000;font-size: 20rpx;">{{toTextStatus}}</text>
			<text style="font-size: 20rpx;margin-left: 50rpx;">音量:</text>
			<text style="margin-bottom: 20rpx;color: #FF0000;font-size: 20rpx;">{{volume}}</text>
		</div>
		<button type="primary" style="margin: 20rpx 0;" plain="true" @click="voiceToText()">开始录音</button>
		<button type="primary" style="margin: 20rpx 0;" plain="true" @click="stopVoiceToText()">停止录音</button>
        <text style="margin-bottom: 20rpx;color: #FF0000;font-size: 20rpx;">{{path}}</text>
	</div>
</template>

<script>
	// 获取 module 
	const sr = uni.requireNativePlugin("YL-SpeechRecognition")

	export default {
		data() {
			return {
				text: "uni-app是一个使用 Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web、以及各种小程序、快应用等多个平台。",
				toVoiceStatus: "未开始",
				transText: "",
				toTextStatus: "未开始",
				volume: 0,
				path:""
			}
		},
		mounted() {
			//初始化
			sr.init("6005f95c");
			//创建文字转语音对象
			sr.createTts(code => {}); 
			//创建语音转文字对象
			sr.createIat(code => {});
		},
		beforeDestroy() {
			sr.destroy();
		},
		methods: {
			textToVoice() {
				if (this.toVoiceStatus == '未开始' || this.toVoiceStatus == "朗读完成" || this.toVoiceStatus == "朗读停止") {
					sr.textToVoice(this.text, data => {
						console.log(JSON.stringify(data));
						switch (data.code) {
							case 1001:
								this.toVoiceStatus = "开始朗读"
								break;
							case 1002:
								this.toVoiceStatus = "暂停朗读"
								break;
							case 1003:
								this.toVoiceStatus = "继续朗读"
								break;
							case 1004:
								this.toVoiceStatus = "正在缓冲..."
								break;
							case 1005:
								this.toVoiceStatus = "正在朗读..."
								break;
							case 1006:
								this.toVoiceStatus = "朗读完成"
								break;
							case 1007:
								this.toVoiceStatus = "朗读停止"
								break;
						}
					});
				}
			},
			stopSpeaking() {
				sr.stopSpeaking();
			},
			pauseSpeaking() {
				sr.pauseSpeaking();
			},
			resumeSpeaking() {
				sr.resumeSpeaking();
			},
			voiceToText() {
				let that = this;
				sr.voiceToText(data => {
					console.log(JSON.stringify(data));
					if (data.code == 1001) {
						that.toTextStatus = "倾听中,请说话..."
					} else if (data.code == 1006) {
						this.toTextStatus = "倾听完毕"
						sr.getIatPath(path=>{
							that.path=path;
						});
					} else if (data.code == 1007) {
						this.toTextStatus = "停止倾听"
					} else if (data.code == 1008) {
						this.volume = data.msg;
					} else if (data.code == 1009) { //结果
						this.transText = data.msg;
					} else if (data.code == 1010) { //error信息
					  //如果data.msg不为空,则属于报错
					  if(data.msg){
						  this.transText = data.msg;
					  }
					}
				})
			},
			stopVoiceToText() {
				sr.stopListening();
			}
		}
	}
</script>

各种回调状态,可参考以上案例代码!

需要注意的是,安卓和ios平台,在语音听写调用停止方法stopListening时,回调有些许不同:

安卓:1007->1009

IOS:1007->1006->1009->1010

猜你喜欢

【Uniapp】uniapp页面跳转的五种方式总结
一、uni.navigateTo定义:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。使用://&nbsp;1.不传参 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:&#39;./home/index&#39; }); //&nbsp;2.传参字符串 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:`./home/index?title=${title}` });
发表于:2024-03-26 浏览:385 TAG:
【UniApp】uniapp怎么清除小程序微信登录信息
随着互联网的快速发展,移动应用的开发变得越来越流行。而随着不同平台的不断涌现,开发者们需要不断学习新的技术和工具。UniApp正是一个强大的跨平台框架,可以让开发者以一个代码库创建多个平台的应用。在UniApp中,一些常见的功能如微信登录已经内置了。当用户使用UniApp创建小程序时,可以使用内置的微信登录功能来实现用户认证。然而,在某些情况下,开发者可能需要清除小程序中的微信登录信息。在本文中,我们将解释如何清除UniApp中小程序的微信登录信息。一、什么是微信登录?微信登录是微信开
发表于:2023-12-25 浏览:298 TAG:
【UniApp】uniapp引入腾讯云播放器
&nbsp; &nbsp; &nbsp; &nbsp; 随着科技的不断发展,人们对于视频媒体的需求和依赖也越来越大。在移动端中,很多应用都需要视频播放功能,然而在实现视频播放时又会面临着很多问题。为了解决这些问题,互联网公司们纷纷推出了自己的视频播放器,腾讯云也不例外。腾讯云播放器是一款流畅、稳定、易于使用的播放器,不仅支持多种格式的视频播放,而且支持高度定制化,可以满足开发者的个性化需求。而本文主要讲述如何在uniapp框架中引入腾讯云播放器。1、注册腾讯云账号在引入腾讯云播放器之前,
发表于:2023-12-25 浏览:325 TAG:
【UniApp】uniapp中如何实现音频录制和声音处理
UniApp是一个基于Vue.js的跨平台开发框架,可以帮助开发者在一次编码的基础上同时生成多个平台的应用,包括iOS、Android、H5等。在UniApp中实现音频录制和声音处理的功能,需要使用到uni-extend插件和uni-audio组件。首先,在你的UniApp项目中,需要安装uni-extend插件。打开命令行窗口,切换到你的项目目录下,运行以下命令来安装uni-extend插件:npm&nbsp;install&nbsp;uni-extend安装完成后,在你的项目中创建
发表于:2023-12-11 浏览:351 TAG:
【UniApp】uniapp怎么关闭软键盘
在开发移动应用程序时,我们经常需要用户在输入框中输入信息。然而,在某些情况下,软键盘通常会影响到应用程序的用户体验。在使用uniapp框架时,我们常常需要关闭软键盘,以方便应用程序的使用。在本文中,我们将探讨如何在uniapp中关闭软键盘。在uniapp中,我们可以使用原生的方式关闭软键盘。一种方法是在输入框之外的任何位置单击。这将导致键盘被隐藏,并使输入框失去焦点。但是,这种方法可能会在用户意外单击页面上的其他区域时导致数据丢失或者用户体验变得不好。另一种方法是通过JavaScri
发表于:2023-12-17 浏览:562 TAG:
【UniApp】uniapp连接数据库
1.首先安装mysql,我用的是cnpm i mysql2.在server目录创建一个名叫db的目录,目录下创建sql.js文件&nbsp;&nbsp;3.在文件中填入如下内容:var&nbsp;mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;require(&#39;mysql&#39;); var&nbsp;connection&nbsp;=&nbsp;mysql.createConnection({ &nbsp;&nbsp;host&amp;nbs
发表于:2023-12-13 浏览:392 TAG:
【UniApp】Uniapp怎么动态更改tabbar
Uniapp是一款跨端开发框架,可以同时开发出H5、小程序、app等多个平台的应用,是非常实用的开发工具。其中,tabbar是作为底部导航栏来展示多个页面的重要控件之一。在开发过程中,有时需要根据不同的业务需求动态更改tabbar,本文将介绍如何在Uniapp中实现动态更改tabbar的方法。一、tabbar的基本使用及结构在Uniapp中使用tabbar,需要在pages.json文件中设置底部导航栏的样式和页面路径。示例代码如下:&quot;tabBar&quot;:&nbsp;{
发表于:2023-12-25 浏览:477 TAG:
【UniApp】uniapp 微信分享
前言&nbsp; &nbsp; &nbsp; &nbsp;微信分享是uniapp开发中常见的需求,大部分的app或者小程序都会具备微信分享的功能,但微信分享效果并不难实现,因为uniapp本身自带了一个微信分享的api,我们只需要调用微信分享的api即可实现前置条件&nbsp; &nbsp; &nbsp; &nbsp; 要完成微信分享首先得打开微信分享的功能,打开manifest.json文件,点击app模块配置,找到微信分享并选中即可&nbsp; &nbsp; &nbsp; &nbsp; 注意
发表于:2023-12-13 浏览:345 TAG:
【Uniapp】uniapp如何传递参数
一、通过URL传递参数URL是一种描述文件在计算机网络中位置的方式。在uniapp中,可以通过URL传递参数。在web开发中,可以通过query string来传递参数。在uniapp中有两种方式来进行URL传参:路由跳转和h5页面跳转:1.路由跳转uniapp中提供了一些路由相关的API,其中,uni.navigateTo和uni.redirectTo这两个API可以在跳转时携带参数。在跳转时,可以将参数以对象的形式传递给URL,并以query string(查询字符串)的形式来表示。如下所示
发表于:2024-03-26 浏览:327 TAG:
【UniApp】利用uniapp实现音频播放功能
利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为&quot;music.mp3&quot;的音频文件作为示例。首先,我们需要在uniapp的项目中创建一个音频播放页面。在pages文件夹下,新建一个名为&quot;audio&quot;的文件夹,并在该文件
发表于:2023-12-09 浏览:650 TAG: