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

Posted API_Cloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用APICloud & 科大讯飞SDK快速实现语音识别功能相关的知识,希望对你有一定的参考价值。

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


一、效果预览

使用APICloud


二、功能实现

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

使用APICloud


使用流程:

1、注册讯飞开放平台账号

2、在讯飞开放平台创建应用,并添加语音听写在线语音合成服务。

3、参考模块文档(docs.apicloud.com/Client-API/Open-SDK/iflyRecognition)相关描述,制作android自定义模块。


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

  使用APICloud


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

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


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

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: "创建失败"
);

);

使用APICloud

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)

使用APICloud使用APICloud

示例:

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
// );

);

使用APICloud

完整代码如下:

<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>

使用APICloud

以上是关于使用APICloud & 科大讯飞SDK快速实现语音识别功能的主要内容,如果未能解决你的问题,请参考以下文章

Android集成科大讯飞SDK语音听写及语音合成功能实现

科大讯飞语音识别

IOS开发之语音合成(科大讯飞)详解

科大讯飞语音识别

Unity 实战项目 ☀️| 接入科大讯飞语音SDK如何在科大讯飞平台搞到SDK!系列共两万多字超级新手教程!

Ubuntu18.04导入科大讯飞离线合成语音SDK