news 2026/7/3 2:26:20

如何接入华为实时语音识别-语音转文字免费版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何接入华为实时语音识别-语音转文字免费版

华为官方开发者文档过于庞大,所以非常多基础说明的文档是复用的

如果你是第一次接触接入华为的能力很容易被相互引用的链接跳转绕晕
所以我整理了一下从基础配置准备到,真正接入实时语音识别完整的过程
每一节也附上了官方链接,如果下面没有讲清的,跳转官方文档再次查看即可

一、华为后台准备

1. 创建或选择 AGC 应用

官方文档: https://developer.huawei.com/consumer/cn/doc/app/agc-help-createapk-0000001912873100

进入 AppGallery Connect,选择对应的项目,如果还没有则新创建一个。


创建完项目进入,选择【常规】选项卡,点击添加应用,然后最重要的填写你将要接入的项目的包名到【应用包名】

2. 开通服务

在我的项目,找到顶部【API 管理】选项卡,在列表里找到机器学习服务勾选

在 AGC 或华为开发者控制台中确认机器学习服务、实时语音识别相关能力已经开通。

3. 获取 API key

在项目设置页面,找到顶部【常规】选项卡,找到项目,复制 apikey

使用同一个 AGC 应用对应的 API key。API key 必须与applicationIdagconnect-services.json属于同一个应用身份。签名证书指纹按官方流程建议配置,但当前 ASR 调试链路没有验证为强制项。(但是我看这个 key 又是在【项目】的类别,我感觉像是多个应用共用一个 key)

4. 下载 agconnect-services.json

官方文档:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-get-started-android-0000001058210705#section113292017144

从同一个 AGC 应用下载agconnect-services.json,放到 app 模块目录:

app/agconnect-services.json

下载后可以用下面命令确认 JSON 包名:

jq-r'.client.package_name'app/agconnect-services.json

输出必须是和你项目包名一直

二、Android 工程配置

官方文档:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-get-started-android-0000001058210705#section113292017144

1. 华为 Maven 仓库

settings.gradle需要包含华为 Maven 仓库:

pluginManagement{repositories{google()mavenCentral()gradlePluginPortal()maven{url'https://developer.huawei.com/repo/'}}}dependencyResolutionManagement{repositories{google()mavenCentral()maven{url'https://developer.huawei.com/repo/'}}}

2. AGC Gradle 插件

根 build.gradle声明 AGC 插件:

buildscript{repositories{google()mavenCentral()maven{url'https://developer.huawei.com/repo/'}}dependencies{classpath'com.huawei.agconnect:agcp:1.9.6.300'}}

当前工程使用 AGP 9.2.1,旧 AGC 插件可能依赖已移除的AppExtension/applicationVariantsAPI,因此这里使用1.9.6.300

app 模块应用 AGC 插件:

apply plugin:'com.huawei.agconnect'

构建时应能看到类似日志:

Using the AGConnect-Config file: .../app/agconnect-services.json processDebugAGCPlugin

3. SDK 依赖

官方文档:https://developer.huawei.com/consumer/cn/doc/hiai-Guides/asr-sdk-0000001050124643

插件:

dependencies{ // 引入实时语音识别服务插件 implementation 'com.huawei.hms:ml-computer-voice-asr-plugin:3.15.1.301' }

sdk 集成:

dependencies{ // 引入实时语音识别服务SDK implementation (com.huawei.hms:ml-computer-voice-asr:3.15.1.301') { exclude group : "com.huawei.hms", module: "network-embedded" } implementation 'com.huawei.hms:network-embedded:7.0.3.300' }

4. Android 权限

ASR lib manifest 需要声明:

<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.RECORD_AUDIO"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

RECORD_AUDIO是运行时权限,本 Demo 由:asr内部申请。

三、运行时初始化和设置监听

初始化华为 SDK,这里主要是设置 key

参考文档:https://developer.huawei.com/consumer/cn/doc/hiai-Guides/sdk-data-security-0000001229909424#section2688102310166

MLApplication.initialize(appContext)MLApplication.getInstance().setUserRegion(MLApplication.REGION_DR_CHINA)MLApplication.getInstance().apiKey=apiKey

设置语音识别监听:

参考文档:https://developer.huawei.com/consumer/cn/doc/hiai-Guides/ml-asr-0000001050066212#section699935381711

// 1. context为应用上下文信息。MLAsrRecognizermSpeechRecognizer=MLAsrRecognizer.createAsrRecognizer(context);// 2.设置回调mSpeechRecognizer.setAsrListener(newSpeechRecognitionListener());// 3.实现回调,实现MLAsrListener接口,实现接口中的方法。protectedclassSpeechRecognitionListenerimplementsMLAsrListener{@OverridepublicvoidonStartListening(){// 录音器开始接收声音。}@OverridepublicvoidonStartingOfSpeech(){// 用户开始讲话,即语音识别器检测到用户开始讲话。}@OverridepublicvoidonVoiceDataReceived(byte[]data,floatenergy,Bundlebundle){// 返回给用户原始的PCM音频流和音频能量,该接口并非运行在主线程中,返回结果需要在子线程中处理。}@OverridepublicvoidonRecognizingResults(BundlepartialResults){// 从MLAsrRecognizer接收到持续语音识别的文本,该接口并非运行在主线程中,返回结果需要在子线程中处理。}@OverridepublicvoidonResults(Bundleresults){// 语音识别的文本数据,该接口并非运行在主线程中,返回结果需要在子线程中处理。}@OverridepublicvoidonError(interror,StringerrorMessage){// 识别发生错误后调用该接口,该接口并非运行在主线程中,返回结果需要在子线程中处理。}@OverridepublicvoidonState(intstate,Bundleparams){// 通知应用状态发生改变,该接口并非运行在主线程中,返回结果需要在子线程中处理。}}

语法识别参数配置:

// 新建Intent,用于配置语音识别参数。IntentmSpeechRecognizerIntent=newIntent(MLAsrConstants.ACTION_HMS_ASR_SPEECH);// 通过Intent进行语音识别参数设置。mSpeechRecognizerIntent// 设置识别语言为英语,若不设置,则默认识别英语。支持设置:"zh-CN":中文;"en-US":英语;"fr-FR":法语;"es-ES":西班牙语;"de-DE":德语;"it-IT":意大利语;"ar": 阿拉伯语;"ru-RU":俄语;"th=TH":泰语;"ms-MY":马来语;"fil-PH":菲律宾语;"tr-TR":土耳其语。.putExtra(MLAsrConstants.LANGUAGE,"en-US")// 设置识别文本返回模式为边识别边出字,若不设置,默认为边识别边出字。支持设置:// MLAsrConstants.FEATURE_WORDFLUX:通过onRecognizingResults接口,识别同时返回文字;// MLAsrConstants.FEATURE_ALLINONE:识别完成后通过onResults接口返回文字。.putExtra(MLAsrConstants.FEATURE,MLAsrConstants.FEATURE_WORDFLUX)// 静音检测时长(发音前,可设置3000到60000毫秒)(毫秒).putExtra(MLAsrConstants.VAD_START_MUTE_DURATION,6000)// 静音检测时长(发音后)(毫秒).putExtra(MLAsrConstants.VAD_END_MUTE_DURATION,700)// 是否设置标点.putExtra(MLAsrConstants.PUNCTUATION_ENABLE,true)// 设置使用场景,MLAsrConstants.SCENES_SHOPPING:表示购物,仅支持中文,该场景对华为商品名识别进行了优化。.putExtra(MLAsrConstants.SCENES,MLAsrConstants.SCENES_SHOPPING);// 启动语音识别。mSpeechRecognizer.startRecognizing(mSpeechRecognizerIntent);

四、常见问题

1. Manifest merger placeholder 报错

现象:

requires a placeholder substitution but no value for <...> is provided

原因通常是把真实 key 写成了${真实key}。正确做法是 manifest 保留${asrApiKey},真实 key 通过local.properties或 Gradle 参数注入。

2. 11203/3002 Service unavailable

优先检查应用身份是否一致:

  1. applicationId是否等于agconnect-services.json.client.package_name
  2. API key 是否来自同一个 AGC 应用。
  3. AGC 上机器学习服务/实时语音识别是否已开通。
  4. 构建日志是否执行了processDebugAGCPlugin
  5. 设备网络是否能访问华为服务。

3. API key 为空

现象: Demo 会在启动 provider 时返回ProviderUnavailable,日志中会有api key is empty

检查:

grep-E'^(asr\.apiKey|asrApiKey)='local.properties gradle.properties

4. AGC 插件不兼容

如果使用旧版本 AGC 插件,在 AGP 9 上可能出现AppExtensionapplicationVariants不存在。使用新版插件:

classpath'com.huawei.agconnect:agcp:1.9.6.300'

5. JSON 放错位置

agconnect-services.json必须放在 app 模块根目录:

app/agconnect-services.json

不是项目根目录,也不是:asr模块目录。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 3:35:45

AI大模型应用开发实战:从Claude、Codex到Dify的完整技术栈指南

在实际 AI 大模型应用开发中&#xff0c;开发者常常面临一个困境&#xff1a;如何将前沿的模型能力&#xff08;如 Claude、Codex、DeepSeek 等&#xff09;高效、稳定地集成到自己的业务系统中&#xff0c;并构建出能够理解复杂指令、执行多步任务的智能体&#xff08;Agent&a…

作者头像 李华
网站建设 2026/7/1 3:35:43

从感官艺术展拆解实时交互系统:技术栈、实现流程与工程实践

这次我们来看一个名为“即兴生活家•Doris的环球感官艺术实验”的展览项目。这不是一个技术工具或模型&#xff0c;而是一场融合了艺术、科技与感官体验的线下展览。对于技术社区的读者而言&#xff0c;它的价值在于其背后可能运用的交互技术、多媒体装置以及数字艺术创作流程。…

作者头像 李华
网站建设 2026/7/1 3:34:31

Facebook广告管理工具实操教程:BM搭建到广告优化全流程

跨境卖家必看 | 从零搭建Facebook广告投放体系&#xff0c;覆盖BM配置、Ads Manager实操、数据优化全流程做过跨境的都知道&#xff1a;Facebook广告费花起来如流水&#xff0c;但真正能把钱花在刀刃上的不到三成。问题往往不在预算&#xff0c;而在工具用得不到位——BM没配好…

作者头像 李华
网站建设 2026/7/1 3:33:42

2026 福州高定木作市场深度解析:主流品牌实力对比与选购指南

随着福州高端住宅市场的持续升温&#xff0c;高定木作与全屋定制逐渐成为大宅装修的核心标配。消费者不再满足于基础的柜体功能&#xff0c;而是追求空间一体化的美学呈现、稳定可靠的工艺品质以及长期无忧的售后保障。当前福州市场既有图森、M77 这类全国顶级高定品牌&#xf…

作者头像 李华
网站建设 2026/7/1 3:33:38

2026年AI大模型全栈开发指南:从智能体到应用部署

这次我们来看一套面向2026年AI大模型岗位的“全栈”技能组合。如果你正在准备AI工程师、AI应用开发或大模型产品经理的求职&#xff0c;或者希望将大模型能力深度集成到自己的业务中&#xff0c;那么Claude Code、Codex、Hermes Agent、OpenClaw、Dify和Coze这几个名字&#xf…

作者头像 李华