iflyRecognition

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

本原生插件封装了科大讯飞的SDK 的语音听写、语音在线合成功能。

使用本原生插件之前需要先去科大讯飞开放平台注册开发者账号,然后创建app,获取 appid ,接着给创建的 app 添加语音听写、在线语音合成服务。最后下载SDK包。

【ios平台使用原生插件的配置】

1,配置 plist 文件

在 iOS 9 下直接进行 HTTP 请求时会收到错误提示。不能直接使用 HTTP 进行请求,需要在 Info.plist 新增一段用于控制 ATS 的配置:

<key>NSAppTransportSecurity</key> <dict>
<key>NSAllowsArbitraryLoads</key> <true/>
</dict>

2,云编译时的配置

云编译时,需要申请访问的权限:麦克风、定位(使用期间)、定位(始终)、通讯录。注意:iOS最低适配版本为 iOS8, 需要在云编译界面,右上角的高级设置里,选择支持iOS版本为8.0以上。

3,动态库配置 ----- 附加原生插件制作

由于科大讯飞的 SDK 是动态生成的。所以需要开发者将动态生成的的 SDK 打包成一个附加自定义原生插件上传 Yonbuilder 移动开发平台。制作方法如下:

下载 iflyRecognitionAppendix 原生插件 zip 包并解压,把 zip 包内 target 目录下的 iflyMSC.framework 文件替换为自己从科大讯飞开放平台动态生成的。然后重新压缩为 zip 包文件上传自定义原生插件,云编译时勾选该原生插件。 (重新压缩时注意不要多一层目录,使用压缩软件打开压缩包,看到目录结构为iflyRecognitionAppendix\iflyRecognitionAppendix\target|module.json。 外面为两层原生插件名目录则正确,为3层原生插件名目录则错误。)(_MACOSX 文件夹删掉,这是由于压缩包是Mac上制作的,在windows解压产生多的文件。 或者使用winRAR解压。)

注意:iOS端最低适配版本为 iOS8.0

【android平台该原生插件配置】

动态库配置 ----- 附加原生插件制作

由于科大讯飞的 SDK 是动态生成的。所以需要开发者将动态生成的的 SDK 打包成一个附加自定义原生插件上传 Yonbuilder 移动开发平台。制作方法如下:

下载 iflyRecognitionAppendix原生插件zip包并解压,将讯飞语音平台sdk中的的Msc.jar放置在解压文件的source下,将sdk中armeabi(讯飞新版sdk不再支持armeabi,可将armeabi-v7a中的libmsc.so放到target下)目录下的的libmsc.so放置在解压文件的target下,如果需要支持armeabi-v7a & arm64-v8a 版so库,可以将armeabi-v7a & arm64-v8a 目录拷贝到target目录下,重新打包成iflyRecognitionAppendix.zip文件上传自定义原生插件,云编译时勾选该原生插件。 注意:在新版本sdk中可能没有Sunflower.jar,只需要Msc.jar即可

【tips】 : 相关错误码描述,进入http://www.xfyun.cn/doccenter/faq?go=contitle66查看,更详细的错误说明http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=13056

createUtility

创建科大讯飞引擎

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

params

android_appid:

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

ios_appid:

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

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true		//布尔类型;操作成功状态值,true|false
}

示例代码


var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.createUtility({
    ios_appid: ‘******’,
    android_appid: ‘******’
}, function(ret, err) {
    if (ret.status) {
        api.alert({ msg: '创建成功'});
    } else {
        api.alert({ msg: "创建失败" });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

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

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:            //字符串类型;返回的错误信息
}

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.record({
    vadbos: 5000,
    vadeos: 5000,
    rate: 16000,
    asrptt: 1,
    audioPath: 'fs://speechRecogniser/speech.pcm'
}, function(ret, err) {
    if (ret.status) {
        api.alert({ msg: ret.wordStr });
    } else {
        api.alert({ msg: err.msg });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopRecord

停止录音

stopRecord()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.stopRecord();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cancelRecord

取消语音识别

cancelRecord()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.cancelRecord();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addRecordHUD

添加录音音量显示器

addRecordHUD({params}, callBack(ret, err))

params

centerX:

  • 类型:数字
  • 描述:(可选项)录音音量标识的圆心坐标
  • 默认值:当前设备屏幕的宽的一半

centerY:

  • 类型:数字
  • 描述:(可选项)录音音量标识的圆心坐标
  • 默认值:100

radius:

  • 类型:数字
  • 描述:(可选项)录音音量标识的圆心半径
  • 默认值:60

transparentR:

  • 类型:数字
  • 描述:(可选项)中间透明区域的半径
  • 默认值:radius的1/2

bg:

  • 类型:字符串
  • 描述:(可选项)录音标识的背景色,支持 rgb,rgba,#
  • 默认值:#AAAAAA

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)原生插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:原生插件依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)原生插件是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    volume:		//数字类型;录音音量大小
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:       //字符串类型;返回错误信息
}

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.addRecordHUD({
    centerX: 160,
    centerY: 120,
    radius: 80,
    transparentR: 40,
    bg: '#AAAAAA',
    fixedOn: api.frameName,
    fixed: false
}, function(ret, err) {
    var volume = ret.volume;
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

showRecordHUD

显示录音音量显示器

showRecordHUD()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.showRecordHUD();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hideRecordHUD

隐藏录音音量显示器

hideRecordHUD()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.hideRecordHUD();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

read

用语音读取文字信息,最大的字节数为1k

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

params

readStr:

  • 类型:字符串
  • 描述:要读取的文字信息

speed:

  • 类型:数字
  • 描述:(可选项)朗读的语速,范围是0-100
  • 默认值:60

volume:

  • 类型:数字
  • 描述:(可选项)朗读的声音大小,范围是0-100
  • 默认值:60

voice:

  • 类型:字符串
  • 描述:(可选项)朗读人(兼容旧版本:0-xiaoyan;1-xiaoyu;)
  • 默认值:xiaoyan
  • 取值范围:
    • xiaoyan:小燕
    • xiaoyu:小宇
    • catherine:凯瑟琳
    • henry:亨利
    • vimary:玛丽
    • vixy:小研
    • vixq:小琪
    • vixf:小峰
    • vixl:小梅
    • vixq:小莉
    • vixr:小蓉(四川话)
    • vixyun:小芸
    • vixk:小坤
    • vixqa:小强
    • vixying:小莹
    • vixx:小新
    • vinn:楠楠
    • vils:老孙

rate:

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

audioPath:

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

disableDefaultSettings:

  • 类型:布尔
  • 描述:(可选项)是否禁用讯飞 SDK 默认设置。禁用后可避免与音视频录制原生插件冲突问题
  • 默认:false

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:               //布尔类型;操作成功状态值,true|false
    speakProgress:       //数字类型;朗读的进度
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:                 //字符串类型;返回错误信息
}

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.read({
    readStr: 'YonBuilder移动开发平台',
    speed: 60,
    volume: 60,
    voice: 1,
    rate: 16000,
    audioPath: 'fs://speechRecogniser/read.mp3'
}, function(ret, err) {
    if (ret.status) {
        ret.speakProgress
    } else {
        api.alert({ msg: err.msg });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopRead

停止朗读

stopReead()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.stopRead();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pauseRead

暂停朗读(用 resumeRead 接口恢复朗读)

pauseRead()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.pauseRead();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resumeRead

恢复朗读

resumeRead()

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.resumeRead();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

fileIdentify

识别音频文件

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

params

filePath:

  • 类型:字符串
  • 描述:需要识别的音频文件的路径(支持fs:// 和 widget://)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true		//布尔类型;操作成功状态值,true|false
    wordStr:		   //字符串类型;识别语音后的文字
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:            //字符串类型;返回的错误信息
}

示例代码

var iflyRecognition = api.require('iflyRecognition');
iflyRecognition.fileIdentify({
    filePath: 'widget://res/car.wav'
}, function(ret, err) {
    if (ret.status) {
        api.alert({ msg: ret.wordStr });
    } else {
        api.alert({ msg: err.msg });
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24