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

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

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


一、效果预览

1.jpg


二、功能实现

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

网络异常,图片无法展示
|


使用流程:

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

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

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


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

3.png

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

4.png

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


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

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

      image.gifimage.gif


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

                  image.gifimage.gif

                  示例:

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

                  image.gifimage.gif

                  完整代码如下:

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

                  image.gifimage.gif

                  相关实践学习
                  达摩院智能语音交互 - 声纹识别技术
                  声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
                  目录
                  相关文章
                  |
                  4月前
                  |
                  监控 API 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
                  79 0
                  |
                  4月前
                  |
                  数据采集 API 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
                  52 0
                  |
                  4月前
                  |
                  数据采集 API 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
                  52 0
                  |
                  4月前
                  |
                  编解码 监控 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
                  49 0
                  |
                  4月前
                  |
                  编解码 监控 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
                  81 0
                  |
                  1月前
                  |
                  编解码 缓存 开发工具
                  Pico Neo 3教程☀️ 三、SDK 的进阶功能
                  Pico Neo 3教程☀️ 三、SDK 的进阶功能
                  |
                  1月前
                  |
                  编解码 Linux 开发工具
                  大牛直播SDK跨平台RTMP直播推送模块技术设计和功能列表
                  大牛直播SDK是一款跨平台RTMP直播推送模块,支持Windows、Linux(x64_64与aarch64架构)、Android及iOS平台。该SDK功能全面,包括摄像头、屏幕、麦克风等数据采集与推送,并支持编码前后数据对接。其架构设计优秀,确保低延迟与高效率,结合SmartPlayer播放器实现毫秒级延迟体验。具备全自研框架,易于扩展且支持多种数据源接入,如外部YUV/RGB/H.264等格式。此外,各平台支持特性丰富,如Windows平台支持多摄像头合成,Android与iOS平台支持前后摄像头实时切换等。大牛直播SDK还提供了多个示例项目以帮助开发者快速上手。
                  |
                  1月前
                  |
                  编解码 开发工具 C#
                  [大牛直播SDK]Windows平台RTMP直播推送模块功能设计
                  大牛直播SDK采用全自研框架,具备高度可扩展性与自适应算法,显著降低延迟并提高采集编码效率。SDK以模块化设计,支持RTMP推流及多种音视频编码格式(如AAC、SPEEX、H.264、H.265),并能与播放器SDK组合实现丰富功能,包括流媒体转发、内置RTSP服务等。提供了详尽的参数配置选项,支持多摄像头、屏幕采集与水印叠加,并兼容Windows 7及以上操作系统。该SDK以C++/C#双接口形式提供,集成简便,同时包含调试与发布版本库,便于开发者快速上手。此外,支持断网重连、实时预览及多种编码前后的数据对接需求。
                  |
                  2月前
                  |
                  语音技术 开发者 Python
                  语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
                  语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
                  |
                  4月前
                  |
                  监控 API 开发工具
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
                  Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
                  66 0