uniapp配置百度语音识别转文字(含demo)

前言

在dcloud社区已经给出了语音识别插件配置的步骤,点击前往:语音识别插件配置

但是还是不够详细,有可能会遇到问题,所以我结合实例配置实现一下。

概述

HBuilderX已支持讯飞语音识别和百度语音识别:

  • 讯飞语音识别
    无需配置SDK参数
    由于讯飞语音识别SDK绑定appid,云端打包只能固定使用DCloud申请的appid,虽然无需开发者向讯飞语音开放平台申请应用,但也导致无法在讯飞语音开放平台自定义应用个性化的高级语音识别参数配置。
    不支持自定义语音识别界面

  • 百度语音识别
    需要向百度语音开放平台申请AppID、API Key、Secret Key,详情可参考百度语音识别引用申请教程。
    云端打包时在manifest.json中的“SDK配置”项中填入配置参数。
    支持自定义语音识别界面,参考HelloH5模板应用中Speech页面中的“自定义语音识别”源码

配置参数需要提交云端打包后才能生效,如果需要真机运行生效请使用自定义基座。

注意:讯飞语音识别有识别次数限制,所以建议优先使用百度语音识别。

一、百度语音识别申请

社区里也有百度语音识别应用申请教程(点击查看),非常详细。

申请后注意一定要领取免费额度,不然不能用,当然了有钱付费的话当我没说。。。


二、配置插件

从百度语音开放平台申请获取配置参数后,需在HBuilderX中配置并提交云端打包才能生效。
老版本HBuilder配置界面有差异,逻辑是一样的,建议更新使用HBuilderX

打开项目的manifest.json文件,在“App模块配置”项中勾选“Speech(语音输入,只能选一个)”:

这里的AppID、API Key、Secret Key我们从百度语音开放平台申请的应用里查看填写

三、使用

startRecognize: function() {	//语音输入
				let _this = this;
				let options = {};
				options.engine = _this.speechEngine;//_this.speechEngine='baidu'
				options.punctuation = false; // 是否需要标点符号 
				options.timeout = 10 * 1000;//超时时间
				plus.speech.startRecognize(options, function(s) {
					_this.searchText = _this.searchText + s;
					console.log("识别结果:"+_this.searchText);
					// 关闭语音
					plus.speech.stopRecognize();
				});
			}

 

使用一切正常,over!

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
好的,以下是用Java编写的百度语音识别API实时语音文字demo: 首先,需要在百度AI开放平台创建一个应用并获取API Key和Secret Key。 然后,使用Java SDK中的BaiduPCS类进行OAuth2.0授权,并获取Access Token。 接下来,使用Java SDK中的BaiduVoice类进行语音识别。具体步骤如下: 1. 创建一个AudioFormat对象,指定音频格式和采样率: ``` AudioFormat format = new AudioFormat(16000, 16, 1, true, false); ``` 2. 创建一个TargetDataLine对象,用于从麦克风录制音频数据: ``` TargetDataLine line; DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); if (!AudioSystem.isLineSupported(info)) { System.out.println("Line not supported"); System.exit(0); } line = (TargetDataLine) AudioSystem.getLine(info); line.open(format); line.start(); ``` 3. 使用百度语音识别API进行实时语音文字,并输出结果: ``` BaiduVoice baiduVoice = new BaiduVoice(apiKey, secretKey); InputStream audio = new AudioInputStream(line); baiduVoice.recognize(audio, new BaiduVoiceListener() { @Override public void onSpeechRecognized(String result) { System.out.println(result); } @Override public void onError(String error) { System.out.println(error); } }); ``` 完整代码如下: ``` import com.baidu.aip.speech.AipSpeech; import com.baidu.aip.speech.TtsResponse; import com.baidu.aip.util.Util; import com.baidu.pcs.BaiduPCS; import com.baidu.pcs.exception.PcsException; import com.baidu.pcshttp.PcsHttpClient; import com.baidu.pcshttp.PcsHttpResp; import com.baidu.pcshttp.PcsRequest; import com.baidu.pcshttp.PcsResponseHandler; import com.baidu.pcshttp.PcsUploadProgressListener; import com.baidu.pcshttp.PcsWebApi; import com.baidu.pcshttp.PcsWebApiException; import com.baidu.voicerecognition.android.BaiduVoice; import com.baidu.voicerecognition.android.BaiduVoiceListener; import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog; import com.baidu.voicerecognition.android.ui.DialogRecognitionListener; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.TargetDataLine; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class BaiduVoiceRecognitionDemo { // 百度AI开放平台应用的API Key和Secret Key private static final String apiKey = "YOUR_API_KEY"; private static final String secretKey = "YOUR_SECRET_KEY"; public static void main(String[] args) { // OAuth2.0授权,获取Access Token BaiduPCS pcs = new BaiduPCS(apiKey, secretKey); try { pcs.auth(); } catch (PcsException e) { e.printStackTrace(); } String accessToken = pcs.getAccessToken(); // 创建一个AudioFormat对象,指定音频格式和采样率 AudioFormat format = new AudioFormat(16000, 16, 1, true, false); // 创建一个TargetDataLine对象,用于从麦克风录制音频数据 TargetDataLine line; DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); if (!AudioSystem.isLineSupported(info)) { System.out.println("Line not supported"); System.exit(0); } try { line = (TargetDataLine) AudioSystem.getLine(info); line.open(format); line.start(); } catch (Exception e) { e.printStackTrace(); return; } // 使用百度语音识别API进行实时语音文字,并输出结果 BaiduVoice baiduVoice = new BaiduVoice(apiKey, secretKey); InputStream audio = new AudioInputStream(line); baiduVoice.recognize(audio, new BaiduVoiceListener() { @Override public void onSpeechRecognized(String result) { System.out.println(result); } @Override public void onError(String error) { System.out.println(error); } }); } } ``` 注意:该demo仅供参考,请根据自己的实际情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值