科大讯飞语音唤醒(Android)

article/2025/9/13 2:54:26

前面的工程项目配置和语音识别差不多,但是需要从SDK的res文件夹中复制ivw文件夹粘贴到main下面的assets文件夹下面。具体的文件配置结构,我截个图给大家看看:
在这里插入图片描述
剩下的步骤就是两页代码了,附上!
首先是MyApplication中的代码:

public class MyApplication extends Application {@Override
public void onCreate() {initializeIflytek();super.onCreate();
}private void initializeIflytek()
{StringBuffer param = new StringBuffer();//IflytekAPP_id为我们申请的Appidparam.append("appid="+getString(R.string.IflytekAPP_id));param.append(",");// 设置使用v5+param.append(SpeechConstant.ENGINE_MODE+"="+ SpeechConstant.MODE_MSC);SpeechUtility.createUtility(MyApplication.this, param.toString());
}    
}

然后是MainActivity中的代码:

package com.example.study01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.os.Environment;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.VoiceWakeuper;
import com.iflytek.cloud.WakeuperListener;
import com.iflytek.cloud.WakeuperResult;
import com.iflytek.cloud.util.ResourceUtil;import org.json.JSONException;
import org.json.JSONObject;public class MainActivity extends AppCompatActivity {//唤醒的阈值,就相当于门限值,当用户输入的语音的置信度大于这一个值的时候,才被认定为成功唤醒。
private int curThresh = 1450;//是否持续唤醒
private String keep_alive = "1";private String ivwNetMode = "0";
// 语音唤醒对象
private VoiceWakeuper mIvw;
//存储唤醒词的ID
private String wordID = "";
// 唤醒结果内容
private String resultString;private TextView tv;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView)findViewById(R.id.tv);// 初始化唤醒对象mIvw = VoiceWakeuper.createWakeuper(MainActivity.this, null);//非空判断,防止因空指针使程序崩溃mIvw = VoiceWakeuper.getWakeuper();if(mIvw != null) {resultString="";tv.setText(resultString);// 清空参数mIvw.setParameter(SpeechConstant.PARAMS, null);// 唤醒门限值,根据资源携带的唤醒词个数按照“id:门限;id:门限”的格式传入mIvw.setParameter(SpeechConstant.IVW_THRESHOLD, "0:"+ curThresh);// 设置唤醒模式mIvw.setParameter(SpeechConstant.IVW_SST, "wakeup");// 设置持续进行唤醒mIvw.setParameter(SpeechConstant.KEEP_ALIVE, keep_alive);// 设置闭环优化网络模式mIvw.setParameter(SpeechConstant.IVW_NET_MODE, ivwNetMode);// 设置唤醒资源路径mIvw.setParameter(SpeechConstant.IVW_RES_PATH, getResource());// 设置唤醒录音保存路径,保存最近一分钟的音频mIvw.setParameter( SpeechConstant.IVW_AUDIO_PATH, Environment.getExternalStorageDirectory().getPath()+"/msc/ivw.wav" );mIvw.setParameter( SpeechConstant.AUDIO_FORMAT, "wav" );// 如有需要,设置 NOTIFY_RECORD_DATA 以实时通过 onEvent 返回录音音频流字节//mIvw.setParameter( SpeechConstant.NOTIFY_RECORD_DATA, "1" );// 启动唤醒mIvw.startListening(new MyWakeuperListener());}else{showTip("唤醒未初始化");}
}public void showTip(String str){Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}/*** 获取唤醒词功能* @return 返回文件位置*/
private String getResource() {final String resPath = ResourceUtil.generateResourcePath(MainActivity.this,ResourceUtil.RESOURCE_TYPE.assets, "ivw/"+getString(R.string.IflytekAPP_id)+".jet");return resPath;
}/*** 唤醒词监听类* @author Administrator**/
private class MyWakeuperListener implements WakeuperListener {//开始说话@Overridepublic void onBeginOfSpeech() {}//错误码返回@Overridepublic void onError(SpeechError arg0) {}@Overridepublic void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {}@Overridepublic void onVolumeChanged(int i) {}@Overridepublic void onResult(WakeuperResult result) {if (!"1".equalsIgnoreCase(keep_alive)) {//setRadioEnable(true);}try {String text = result.getResultString();JSONObject object;object = new JSONObject(text);StringBuffer buffer = new StringBuffer();buffer.append("【RAW】 " + text);buffer.append("\n");buffer.append("【操作类型】" + object.optString("sst"));buffer.append("\n");buffer.append("【唤醒词id】" + object.optString("id"));buffer.append("\n");buffer.append("【得分】" + object.optString("score"));buffer.append("\n");buffer.append("【前端点】" + object.optString("bos"));buffer.append("\n");buffer.append("【尾端点】" + object.optString("eos"));resultString = buffer.toString();} catch (JSONException e) {e.printStackTrace();}tv.setText(resultString);}
}
}

 

最后别忘记添加录音动态权限

大差不差应该就是这些了,但是还是怕同学们会出错,比如:appid是啥没有搞清楚,还有返回文件的位置没有弄清楚,细节吧,我这个是简单的实现语音唤醒功能,希望能对大家有所帮助!


http://chatgpt.dhexx.cn/article/0PDavttg.shtml

相关文章

【飞桨PaddleSpeech语音技术课程】— 语音唤醒

(以下内容搬运自飞桨PaddleSpeech语音技术课程,点击链接可直接运行源码) 1. KWS 概述 随着人工智能的飞速发展,市场上推出了各式各样的智能设备,AI 语音的发展更是使得语音助手成为各大智能终端设备必不可少的软件。语音是人类与设备最直接…

语音唤醒的具体技术方案

\qquad 昨天的文章说的是不同的语音激活检测技术,传送门今天要说的是这个技术中间的具体的语音唤醒技术。语音唤醒技术到目前已经经过了三代的发展了。 第一代的技术很好理解,就是先构建一些模板,然后遇到语音,和模板进行匹配&…

26、使用友善NanoPi NEO和外设硬件实现语音唤醒功能、目标检测功能、语音播报功能

基本思想:使用友善开发板进行目标检测和测试 第一步:查看教程和进行刷机http://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO/zh#.E4.B8.8B.E8.BD.BD.E7.B3.BB.E7.BB.9F.E5.9B.BA.E4.BB.B6 小开发板子还是蛮不错的~,友善也开始卷了。。…

科大讯飞Windows麦克风监听语音唤醒+语音识别demo

最近在学习如何应用API来实现语言交互系统的功能,所以打算写一篇文章来整理和记录自己了解API使用的过程。 有很多平台提供语音识别等功能的API,文章使用的是科大讯飞开发的API。使用讯飞开放平台SDK实现一个Windows语音交互demo 讯飞开放平台简介SDK的下…

讯飞语音——唤醒

讯飞语音唤醒 唤醒功能,顾名思义,通过语音,唤醒服务,做我们想做的事情。 效果图(开启应用后说讯飞语音或者讯飞语点唤醒) 源码下载 地址:http://download.csdn.net/detail/q4878802/9023213 步…

说话就能轻松操控,科大讯飞语音唤醒技术带来便利体验!

如果,紧箍咒失灵了,孙悟空还会听唐僧的话吗? 如果,专注驾驶途中,一声呼唤便可响应需求是否很方便? 如果,手机落在卧室的某个角落,轻轻唤醒便能找到是否心情舒畅? 现实生…

Android——百度语音唤醒

这篇文章我们主要介绍一下,百度语音唤醒。所谓语音唤醒是指说出指定的语音指令(自定义的唤醒词),使程序激活某个功能的能力。百度语音唤醒支持自定义唤醒词。我做过讯飞的语音唤醒,这两个比较起来,讯飞的语音唤醒整体效果比百度要好。百度的语音唤醒功能需要使用唤醒词评…

androidstudio的语音唤醒功能

Manifest配置 写在application之外 <uses-permission android:name"android.permission.RECORD_AUDIO" /><uses-permission android:name"android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name"android.permiss…

国内那几家语音唤醒技术做的比较好? 语音唤醒技术哪家强?

编辑导语&#xff1a; 随着语音交互技术的日渐成熟&#xff0c;越来越多的智能硬件都选择增加语音能力作为产品卖点之一。但是&#xff0c;设备在进入语音交互工作状态的时候&#xff0c;需要先进行唤醒操作。 常见的唤醒语音交互的操作有按键或者触屏形式&#xff0c;但是&…

语音唤醒工具:WeKWS

1 简介 本文根据2022年10月《WEKWS: A PRODUCTION FIRST SMALL-FOOTPRINT END-TO-END KEYWORD SPOTTING TOOLKIT 》翻译总结的。作者为西北工业大学航海学院张晓雷老师团队、西工大音频语音与语言处理研究组谢磊老师团队、WeNet 开源社区等。 WeKWS是一个可以投入生产使用、容…

讯飞语音开发之语音唤醒

只有前面讲到的语音合成&#xff0c;语音理解&#xff0c;语义理解&#xff0c;语音识别确实可以实现人机交流。但是还不能实现完全智能&#xff0c;不能狗做到实时问道&#xff0c;间歇式问答。要实现实时问答&#xff0c;切不用手动操作。这时候语音唤醒功能就大选伸手了。下…

百度语音唤醒

一&#xff1a;前期准工作 &#xff08;1&#xff09;进入百度开放平台&#xff0c;注册账号&#xff0c;创建应用&#xff0c;拿到应用相对应的 AppID&#xff0c;API密钥&#xff0c;密钥 &#xff08;2&#xff09;配置相关信息 <uses-permission android:name"an…

语音唤醒原理

百度语音唤醒时的日志 D/audio_hw_primary: adev_open_input_stream is_karaoke_fastcapture0 D/audio_hw_primary: adev_open_input_stream: enter: sample_rate(16000) channel_mask(0x10) devices(0x80000004) stream_handle(0xf3439a00) io_handle(454) source(1) …

语音唤醒功能篇

语音唤醒功能 语音唤醒使得系统中的各个功能模块能够很好的分隔开来。用户通过唤醒词“依米”唤醒系统&#xff0c;发送语音指令&#xff0c;系统检测到语音指令中的关键词&#xff0c;然后去执行相对应的功能。当系统执行完成后&#xff0c;便进入等待下一次被唤醒状态&#…

语音唤醒

语音唤醒 前言一、语音唤醒相关环境搭建二、使用步骤1.使用流程2.示例代码 总结 前言 针对语音交互过程&#xff0c;提供了一种语音唤醒的方法供大家参考&#xff0c;语音交互采用snowboy离线语音唤醒引擎&#xff0c;snowboy已经被kitt.AI团队下架&#xff0c;但我们仍能够在…

语音唤醒简单说明

随着 Echo 出现,all in one 音响类产品雏形开始显现,语音交互成为最直接的控制方式,Amazon Echo作为最佳代表,智能语音交互成为互联网入口的新价值所在。ABI Research 在 2017 年収布的预测报告指出,估计到 2022 年,支持语音控制的装置出货量将达到 7500万台,其中智能喇…

语音唤醒技术的原理是什么?

https://www.toutiao.com/a6644766450860950024/ 2019-01-10 15:27:29 “天猫精灵。”“哎&#xff0c;在的&#xff0c;你说” “小爱同学&#xff0c;定明天早上8点的闹钟。”“好的&#xff0c;已经帮你定好明天早上8点的闹钟” 不少同学家里都有AI智能音箱产品&#xff0…

android系统看片软件,真正的手机看片神器 和视界手机APP评测

播放界面支持丰富的手势操作&#xff0c;我们可以通过上下左右的滑动手指来调整影片进度以及音量大小。和视界还可以选择不同的输出设备——只要硬件设备支持&#xff0c;我们可以通过手机将和视界中的视频内容投射到电视上观看。 注重影片的口碑效应&#xff0c;支持用户打分与…

FreeRTOS时间片调度

一、FreeRTOS时间片调度概述 FreeRTOS支持多个任务同时拥有一个优先级&#xff0c;这些任务的调度就可以使用时间片来进行调度。在FreeRTOS中允许一个任务允许一个时间片&#xff08;一个时钟节拍的长度&#xff09;后让出CPU的使用权&#xff0c;让拥有同优先级的下个任务运行…

MongoDB 分片集群技术

在了解分片集群之前&#xff0c;务必要先了解复制集技术&#xff01; 1.1 MongoDB复制集简介 一组Mongodb复制集&#xff0c;就是一组mongod进程&#xff0c;这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性&#xff0c;这是生产部署的基础。 1.1.1 复制集的…