You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

react-native-voice无法识别粤语和普通话的问题求助

React Native Voice 中文识别返回字母而非汉字的排查方案

我之前也碰到过类似的多语言识别异常问题,结合react-native-voice的底层工作逻辑和安卓设备的语音识别特性,给你梳理几个可能的原因和解决方向:

1. 先确认设备支持的中文语言代码

你尝试的zh-CNzh-HK这些是通用的语言代码,但不同安卓设备的语音引擎对代码的识别可能有差异,不要凭经验猜代码,直接调用库的API获取设备实际支持的语言列表:

Voice.getAvailableLanguages().then(languages => {
  console.log('当前设备支持的所有语言:', languages);
}).catch(err => console.error('获取语言列表失败:', err));

从输出的列表里找到对应的中文条目(比如可能是zh-CNzh-Hant-HK或者其他格式),用这个精准的代码调用Voice.start(),这一步大概率能解决代码不匹配的问题。

2. 检查华为设备的中文语音包

华为Nova Plus默认使用自家的语音识别引擎,中文识别依赖对应的语音包(在线/离线)。如果语音包未安装或损坏,引擎可能会默认返回拼音而非汉字:

  • 打开系统设置 → 搜索「语音输入」→ 进入「管理语音包」
  • 检查是否安装了「普通话(中国大陆)」和「粤语(香港)」的语音包,没有的话直接下载安装,安装完成后重启APP再测试。

3. 确认权限与库版本配置

虽然你其他语言能正常识别,但还是可以快速确认两个点:

  • 权限是否齐全:检查AndroidManifest.xml里是否包含必要权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    
    (在线识别需要INTERNET权限,离线识别则不需要,但建议都加上)
  • 库版本是否过时:旧版本的react-native-voice可能存在中文编码处理的bug,尝试升级到最新稳定版:
    npm install react-native-voice@latest
    # 或者 yarn add react-native-voice@latest
    

4. 排查在线/离线识别模式

华为的语音引擎可能默认优先使用离线识别,如果离线语音包有问题,会导致识别异常。你可以尝试强制切换到在线识别(如果设备支持),或者在系统语音设置里确认离线识别的开关状态,确保离线包正常工作。


内容的提问来源于stack exchange,提问作者learningtech

火山引擎 最新活动