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