You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Voice无法检测语音,onSpeechResults回调未触发求助

解决React Native Voice语音检测失效与NativeEventEmitter警告问题

可能的原因及解决方案

1. 版本兼容与缓存清理

这两个警告是因为RN Voice原生模块未实现addListener和removeListeners方法,大概率是版本和当前RN不兼容导致的。

  • 先升级react-native-voice到最新稳定版:
    npm install react-native-voice@latest --save
    # 用yarn的话执行:yarn add react-native-voice@latest
    
  • 升级后清理缓存并重新安装依赖:
    npx react-native start --reset-cache
    cd ios && pod install && cd ..
    

2. 手动补充原生模块的EventEmitter方法(临时修复)

如果升级后警告还在,可以临时在原生代码里补全方法(优先升级,不推荐长期用这个方法):

  • iOS端:找到项目里的RCTVoice.m文件,添加:
    - (void)addListener:(NSString *)eventName {}
    - (void)removeListeners:(NSInteger)count {}
    
  • Android端:找到VoiceModule.java文件,添加:
    @ReactMethod
    public void addListener(String eventName) {}
    
    @ReactMethod
    public void removeListeners(Integer count) {}
    
    写完重新编译项目即可。

3. 核对语音权限配置

虽然isAvailable正常,但权限配置不全也会导致识别失败:

  • iOS:在Info.plist里添加麦克风和语音识别权限:
    <key>NSSpeechRecognitionUsageDescription</key>
    <string>需要使用语音识别功能</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>需要访问麦克风</string>
    
  • Android:在AndroidManifest.xml里添加:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 代码里要主动请求权限:
    import Voice from '@react-native-voice/voice';
    
    const requestPermissions = async () => {
      try {
        await Voice.requestPermissions();
      } catch (err) {
        console.error('权限请求失败', err);
      }
    };
    

4. 检查回调注册与清理逻辑

确认onSpeechResults的注册方式正确,且组件卸载时清理监听:

import Voice from '@react-native-voice/voice';
import { useEffect } from 'react';

useEffect(() => {
  Voice.onSpeechResults = (event) => {
    console.log('识别结果:', event.value);
  };

  return () => {
    Voice.destroy().then(Voice.removeAllListeners);
  };
}, []);

别漏了卸载时的清理操作,不然可能导致内存泄漏,回调失效。

5. 排查设备系统级语音功能

有些设备可能系统本身的语音识别有问题:

  • iOS:检查是否开启了「设置- Siri与搜索」里的语音识别功能
  • Android:确保Google语音服务正常运行,可以用系统自带的语音输入测试能否识别,排除设备本身的问题

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:42:42