android studio开发科大讯飞最新版

embedded/2025/2/12 21:25:50/

实现科大讯飞版语音唤醒功能纯净版

首先需要获取唤醒信息:控制台-讯飞开放平台

通过开通唤醒功能,获取测试名额

1、通过控制台创建新应用: 控制台-讯飞开放平台

2、点击应用,选择语音唤醒(新版)

3、申请装机量(免费10个), 获取对应的APPID, APISecret, APIKey信息

剩下的就是代码开发了,对于一个纯小白,我最大的难点在于SDK工作路径的理解。

我以为这是个固定名称,实际为app的sdk存储路径, 不明白他们为什么不在代码内部直接实现

这里的实际内容是将resource文件夹中的资源 拷贝直 app的sdk文件夹中,已方便使用。

将资源复制到assets下, 然后再将资源拷贝到app的sdk下,封装了一个工具类,对科大讯飞的所有sdk均可用

package com.example.xiaobei;import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;public class AssetCopyUtils {private static final String TAG = "AssetFolderCopyUtils";public static void copyAssetFolder(Context context, String assetFolderPath, String destinationFolderPath) {AssetManager assetManager = context.getAssets();try {String[] files = assetManager.list(assetFolderPath);if (files!= null) {File destinationFolder = new File(destinationFolderPath);if (!destinationFolder.exists()) {if (!destinationFolder.mkdirs()) {Log.e(TAG, "Failed to create destination folder: " + destinationFolderPath);return;}}for (String file : files) {String fullAssetPath = assetFolderPath + File.separator + file;String fullDestinationPath = destinationFolderPath + File.separator + file;if (isAssetDirectory(assetManager, fullAssetPath)) {copyAssetFolder(context, fullAssetPath, fullDestinationPath);} else {copyAssetFile(context, fullAssetPath, fullDestinationPath);}}}} catch (IOException e) {Log.e(TAG, "Error copying asset folder: " + e.getMessage());}}private static boolean isAssetDirectory(AssetManager assetManager, String assetPath) {try {String[] subFiles = assetManager.list(assetPath);return subFiles!= null && subFiles.length > 0;} catch (IOException e) {Log.e(TAG, "Error checking asset directory: " + e.getMessage());return false;}}private static void copyAssetFile(Context context, String assetPath, String destinationPath) {AssetManager assetManager = context.getAssets();try (InputStream in = assetManager.open(assetPath);OutputStream out = new FileOutputStream(destinationPath)) {byte[] buffer = new byte[1024];int read;while ((read = in.read(buffer))!= -1) {out.write(buffer, 0, read);}Log.d(TAG, "Copied asset file: " + assetPath);} catch (IOException e) {Log.e(TAG, "Error copying asset file: " + assetPath + " - " + e.getMessage());}}
}

剩下的就是对资源的初始化,以及设置回调处理。

我这里没有使用他们demo里的方式,而是获取音频后直接进行唤醒操作,

int read = audioRecord.read(buffer, 0, BUFFER_SIZE);
if (read > 0) {// 发送 PCM 数据if (AIKIT_STATUS){write(buffer, status);if (status == AiStatus.BEGIN) {status = AiStatus.CONTINUE;}}else {// 语音做ASR识别//sendDataToRecognize(buffer);Log.d(TAG, "audioRecording......");
}

唤醒词是通过resource中的keyword.txt决定的,如果需要变更,修改即可使用。

通过回调函数,获取唤醒词,并使用阈值进行筛选,以获取自己的唤醒词。

demo下载


http://www.ppmy.cn/embedded/161696.html

相关文章

Spring过滤器和拦截器区别?

在Spring框架中,过滤器和拦截器都用于在请求处理前后执行特定操作,但它们的作用范围和实现方式有所不同。 1. 过滤器(Filter) 过滤器是Servlet规范的一部分,主要用于在请求到达Servlet之前或响应发送给客户端之前进行…

深度学习框架PyTorch

一、框架概览 深度学习框架:是一个针对深度学习的科学计算库,在深度学习领域,以下是当前市场上几个主流的深度学习框架: TensorFlow 上一代框架:起始于静态图时代,为早期深度学习的发展做出了巨大贡献。特…

Vite 代理下的 POST 请求跨域问题排查与解决方案

📌 问题描述 在 Vite 开发环境中,我遇到了一个奇怪的现象: GET 请求可以成功返回数据POST 请求却返回 403 Forbidden: Invalid CORS request但如果我手动使用 fetch 直接请求服务器 API,POST 请求可以成功 我的 Vite 代理配置如…

AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)

背景 当前大模型的权重加载和调用,主要是通过在HuggingFace官网下载并使用transformer的库来加以实现;其中大模型的权重文件较大(部分>100GB),若只是快速研究网络结构和数据流变化,则无需下载权重。本文…

【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码

飞渡科技数字孪生武汉CIM管理平台,基于自研数字孪生引擎,结合数字孪生、物联网IOT、云计算等信息技术,以城市数据资源融合共享为主线,打造感知、联结、计算、运用“四位一体”的城市大脑,赋能经济社会高质量可持续发展…

亚马逊数据采集API教程:如何使用Pangolin Scrape API高效获取Amazon商品数据

为什么需要专业的Amazon Scrape API? 亚马逊是全球最大的电子商务平台之一,商家和数据分析师需要实时获取商品数据以优化业务决策。然而,由于亚马逊的严格反爬机制,传统的爬虫方法面临诸多挑战: 反爬机制复杂&#xff…

荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测

目录 荣耀Magic系列手机详细对比 最新二手价格预测 性价比分析 总结 以下是荣耀Magic系列手机的详细对比以及最新二手价格预测: 荣耀Magic系列手机详细对比 特性荣耀Magic3系列荣耀Magic4系列荣耀Magic5系列荣耀Magic6系列荣耀Magic7系列处理器骁龙888&#x…

【开源免费】基于SpringBoot+Vue.JS社区养老服务平台(JAVA毕业设计)

本文项目编号 T 190 ,文末自助获取源码 \color{red}{T190,文末自助获取源码} T190,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…