语音辨认性能曾经是一个很遍及的性能,在特定情境下,能带给人们不便的交互的体验,比方驾驶时应用语音进行唤醒手机,各类智能音响产品,语音管制智能电视等。本文次要介绍在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>