前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用APICloud & 科大讯飞SDK快速实现语音识别功能

使用APICloud & 科大讯飞SDK快速实现语音识别功能

原创
作者头像
APICloud官方
发布2022-04-20 14:05:28
1.7K0
发布2022-04-20 14:05:28
举报

语音识别功能已经是一个很普及的功能,在特定情境下,能带给人们方便的交互的体验,比如驾驶时使用语音进行唤醒手机,各类智能音响产品,语音控制智能电视等。本文主要介绍在APICloud平台使用科大讯飞的SDK快速实现语音识别功能。

一、效果预览

二、功能实现

在注册好APICloud账号后,进入控制台,添加iflyRecognition模块。iflyRecognition模块封装了科大讯飞的SDK 的语音听写、语音在线合成功能。

使用流程: 1、注册讯飞开放平台账号 2、在讯飞开放平台创建应用,并添加语音听写在线语音合成服务。 3、参考模块文档(docs.apicloud.com/Client-API/Open-SDK/iflyRecognition)相关描述,制作Android自定义模块。

从讯飞下载的合成SDK,如下图:

根据文档提示,制作的自定义模块如下图:

重新压缩后,上传到自定义模块处,添加到项目。

根据模块文档,调用接口:

1、createUtility

创建科大讯飞引擎

createUtility({params}, callback(ret, err))

params

android_appid:

  • 类型:字符串
  • 描述:从科大讯飞开放平台得到的 appid(android端)

ios_appid:

  • 类型:字符串
  • 描述:从科大讯飞开放平台得到的 appid(iOS端)

示例:

var iflyRecognition = api.require('iflyRecognition');
		iflyRecognition.createUtility({
			ios_appid: '6041****',      // 填写讯飞平台上获得的appid         
			android_appid: '6041****'   // 填写讯飞平台上获得的appid 
		}, function (ret, err) {
			if (ret.status) {
				api.alert({
					msg: '创建成功'
				});
			} else {
				api.alert({
					msg: "创建失败"
				});
			}
		});

2、

record

识别语音返回文字

record({params}, callback(ret, err))

params

vadbos:

  • 类型:数字
  • 描述:(可选项)前断点时间(静音时间,即用户多长时间不说话做超时处理),范围是0-10000单位ms
  • 默认值:5000

vadeos:

  • 类型:数字
  • 描述:(可选项)后断点时间(静音时间,即用户多长时间不说话做超时处理),单位ms,范围是0-10000
  • 默认值:5000

rate:

  • 类型:数字
  • 描述:(可选项)采样率(支持16000,8000)
  • 默认值:16000

asrptt:

  • 类型:数字
  • 描述:(可选项)返回的语句是否有标点符号,取值范围:0-无,1-有
  • 默认值:1

audioPath:

  • 类型:字符串
  • 描述:(可选项)录制的音频文件保存路径(如fs://123.pcm,一定要加后缀名;一定要加后缀名;只允许一级目录,不允许二级机二级以上的目录,例如不允许fs://test/123/pcm),不支持widget 协议。注意:在 iOS 平台上由于科大讯飞 SDK 限制,只支持 pcm 格式音频保存
  • 备注:若不传则不保存

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true        //布尔类型;操作成功状态值,true|false
    wordStr:           //字符串类型;识别语音后的文字
    eventType:'',    //字符串类型;交互事件类型:
                     //record_end:录音结束事件 (仅支持ios)
                     //recognize_end:识别结束事件
             //recognize_start: 识别开始事件(仅支持Android)
}

示例:

var iflyRecognition = api.require('iflyRecognition');
			iflyRecognition.record({
				vadbos: 5000,
				vadeos: 2000,
				rate: 16000,
				asrptt: 1,
				audioPath: 'fs://myapp/speech.pcm'
			}, function (ret, err) {
				if (ret.status) {
					if (ret.wordStr) {
						let wordStr = ret.wordStr;
						that.data.items.push(wordStr);
						that.data.isOk = true;
						//flag = false;
					}
				} else {
					// api.alert({
					//     msg: err.msg
					// });
				}
			});

完整代码如下:

<template>
	<safe-area>
		<view class="page">

			<view class="content"  v-if="isOk">
				<view class="item" v-for="(item, index) in items"><text>{{item}}</text></view>
			</view>

			<view class="btm" onclick="fnrecord()"><text>开始语音识别,请说话。。。</text></view>

		</view>
	</safe-area>
</template>
<script>
export default {
	name: 'record',
	apiready() {//like created
		var iflyRecognition = api.require('iflyRecognition');
		iflyRecognition.createUtility({
			ios_appid: '6041****',      // 填写自己从讯飞平台上获得的appid         
			android_appid: '6041****'   // 填写自己从讯飞平台上获得的appid 
		}, function (ret, err) {
			if (ret.status) {
				api.alert({
					msg: '创建成功'
				});
			} else {
				api.alert({
					msg: "创建失败"
				});
			}
		});
	},
	data() {
		return {
			isOk: false,
			items: []
		}
	},
	methods: {
		fnrecord() {
			console.log(1111)
			var that = this;
			var iflyRecognition = api.require('iflyRecognition');
			iflyRecognition.record({
				vadbos: 5000,
				vadeos: 2000,
				rate: 16000,
				asrptt: 1,
				audioPath: 'fs://myapp/speech.pcm'
			}, function (ret, err) {
				if (ret.status) {
					if (ret.wordStr) {
						let wordStr = ret.wordStr;
						that.data.items.push(wordStr);
						that.data.isOk = true;
						//flag = false;
					}
				} else {
					// api.alert({
					//     msg: err.msg
					// });
				}
			});
		}

	}
}
</script>
<style>
.page {
	height: 100%;
	width: 100%;
}

.content {
	position: relative;
	top: 30px;
	width: 80%;
	height: 60%;
	border: 1px solid #333;
	background-color: #fff;
}

.btm {
	position: absolute;
	bottom: 20px;
	left: 40px;
	height: 70px;
	width: 300px;
	padding: 20px 20px;
	border: 1px solid #eee;
	border-radius: 5px;
	background-color: rgb(51, 142, 216);
}

.item {
	width: 90%;
}
</style>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • params
  • record
    • params
      • callback(ret, err)
      相关产品与服务
      语音识别
      腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档