Unity -Demo 之 ✨ 语音识别-讯飞SDK使用过程

简介: 因为工作需求,现在要选择连接一个语音识别功能接入系统中,所以目前正在尝试使用讯飞的语音识别SDK进行连接。在使用语音识别的sdk之前先查阅了一下语音识别的基本知识然后去讯飞的官网注册信息并创建一个应用用于使用SDK基本步骤处理完了,下面就是下载SDK进行集成使用了,我这里用的是语音唤醒的SDK,按照官方教程做就行。教程在这-语音唤醒SDK教程当上面这几步做完了之后,接下来就是将这个工程打包成给unity使用的aar包了。可以参考这个教程:将Android Studio的工程打包成aar包给unity使用

因为工作需求,现在要选择连接一个语音识别功能接入系统中,所以目前正在尝试使用讯飞的语音识别SDK进行连接。


在使用语音识别的sdk之前先查阅了一下语音识别的基本知识


然后去讯飞的官网注册信息并创建一个应用用于使用SDK


基本步骤处理完了,下面就是下载SDK进行集成使用了,我这里用的是语音唤醒的SDK,按照官方教程做就行。教程在这-语音唤醒SDK教程


当上面这几步做完了之后,接下来就是将这个工程打包成给unity使用的aar包了。可以参考这个教程:将Android Studio的工程打包成aar包给unity使用


这样只是将讯飞语音的SDK可以跟Unity一起使用了,但是还没有写具体调用sdk的使用方法,还需要在Android Studio中写一些调用此语音识别的SDK的接口提供给Unity中使用才行。


正文:

简单分析下SDK的结构,便于使用


SDK包说明

《Android SDK目录结构一览》


manifests:android配置应用权限文件

sample:相关离线能力demo(语音唤醒WakeDemo)

assets:SDK相关资源配置文件

Libs:动态库和jar包

res:UI文件和相关布局文件xml

readme说明(必看)

release 版本说明

吐了 语音唤醒搞了一天了,unity打包出来apk居然直接白屏

安卓端语音识别代码

package com.example.unity_asr;
import android.os.Bundle;
import android.util.Log;
import com.iflytek.cloud.RecognizerListener;
        import com.iflytek.cloud.RecognizerResult;
        import com.iflytek.cloud.SpeechError;
        import com.iflytek.cloud.SpeechRecognizer;
        import com.iflytek.cloud.SpeechConstant;
        import com.iflytek.cloud.SpeechUtility;
        import com.unity3d.player.UnityPlayer;
        import com.unity3d.player.UnityPlayerActivity;
        import org.json.JSONException;
        import org.json.JSONObject;
        import java.util.HashMap;
        import java.util.LinkedHashMap;
public class MainActivity extends UnityPlayerActivity {
    private SpeechRecognizer mIat;
    private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化
        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=60307482");
        mIat = SpeechRecognizer.createRecognizer(this, null);
        //设置mIat的参数
        //表示是什么服务
        mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        //设置语言
        mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        //接受语言的类型
        mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
        //使用什么样引擎
        mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
    }
    //创建一个监听器
    RecognizerListener mRecognizerLis = new RecognizerListener() {
        @Override//当声音改变的时候调用
        public void onVolumeChanged(int i, byte[] bytes) {
        }
        @Override//开始说话的时候调用
        public void onBeginOfSpeech() {
        }
        @Override//结束说话的时候调用
        public void onEndOfSpeech() {
        }
        @Override//返回结果
        public void onResult(RecognizerResult recognizerResult, boolean b) {
            printResult(recognizerResult);
        }
        @Override//出错的时候调用
        public void onError(SpeechError speechError) {
        }
        @Override//自定义事件
        public void onEvent(int i, int i1, int i2, Bundle bundle) {
        }
    };
    //解析Json的方法
    //方法来自speechDemo->java->voicedemo->IatDemo中的printResult方法
    private void printResult(RecognizerResult results) {
        String text = JsonParser.parseIatResult(results.getResultString());
        String sn = null;
        // 读取json结果中的sn字段
        try {
            JSONObject resultJson = new JSONObject(results.getResultString());
            sn = resultJson.optString("sn");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mIatResults.put(sn, text);
        StringBuffer resultBuffer = new StringBuffer();
        for (String key : mIatResults.keySet()) {
            resultBuffer.append(mIatResults.get(key));
        }
        //把消息发送给Unity场景中MsgController物体上的OnResult方法
        UnityPlayer.UnitySendMessage("MsgController", "OnResult", resultBuffer.toString());
    }
    //这个方法让Unity来调用
    public void beginListen() {
        //开始识别
        mIat.startListening(mRecognizerLis);
    }
    public int beginTest(int a, int b){
        //交互测试
        UnityPlayer.UnitySendMessage("Canvans","TestDemo","");
        return a+b;
    }
}
相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
5月前
|
前端开发 开发工具 图形学
PicoVR Unity SDK⭐️三、详解与UI的交互方式
PicoVR Unity SDK⭐️三、详解与UI的交互方式
|
5月前
|
API 开发工具 图形学
PicoVR Unity SDK⭐️五、常用API接口函数一览
PicoVR Unity SDK⭐️五、常用API接口函数一览
|
5月前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
5月前
|
开发工具 vr&ar 图形学
PicoVR Unity SDK⭐️四、基础传送方式详解
PicoVR Unity SDK⭐️四、基础传送方式详解
|
5月前
|
API 开发工具 vr&ar
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
|
5月前
|
开发工具 图形学 iOS开发
Unity与IOS⭐Unity接入IOS SDK的流程图
Unity与IOS⭐Unity接入IOS SDK的流程图
|
5月前
|
开发工具 图形学 Android开发
Pico Neo 3教程☀️ 二、从 PicoVR Unity SDK 迁移至 Unity XR SDK
Pico Neo 3教程☀️ 二、从 PicoVR Unity SDK 迁移至 Unity XR SDK
|
6月前
|
机器学习/深度学习 自然语言处理 算法
未来语音交互新纪元:FunAudioLLM技术揭秘与深度评测
人类自古以来便致力于研究自身并尝试模仿,早在2000多年前的《列子·汤问》中,便记载了巧匠们创造出能言善舞的类人机器人的传说。
12419 116
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
2月前
|
机器学习/深度学习 自然语言处理 搜索推荐
智能语音交互技术:构建未来人机沟通新桥梁####
【10月更文挑战第28天】 本文深入探讨了智能语音交互技术的发展历程、当前主要技术框架、核心算法原理及其在多个领域的应用实例,旨在为读者提供一个关于该技术全面而深入的理解。通过分析其面临的挑战与未来发展趋势,本文还展望了智能语音交互技术如何继续推动人机交互方式的革新,以及它在未来社会中的潜在影响。 ####
119 0