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

如何为React-Native-voice语音识别设置更长的暂停与监听时长?

React-Native-Voice 调整暂停检测时长与总监听时长方案

1. 设置用户暂停后的识别等待时长

React-Native-Voice 提供了 pauseDetectionTimeout 参数,用于控制用户停止说话后,识别引擎等待多久才终止当前识别会话。这个参数单位是毫秒,你可以根据需求设置更大的值,比如4000(4秒),避免用户短暂停顿就触发识别结束。

启动识别时通过配置项传入:

import Voice from '@react-native-voice/voice';

// 启动中文语音识别,设置4秒暂停超时
const startVoiceRecognition = async () => {
  await Voice.requestRecordPermission();
  Voice.start('zh-CN', {
    pauseDetectionTimeout: 4000 // 用户暂停4秒后才终止识别
  });
};

2. 延长总监听时长(适配长思考时间的用户)

总监听时长的控制需要分平台处理:

Android 平台

可以通过 maxDuration 参数直接设置整个识别会话的最长时长,单位为毫秒。比如设置为120000(2分钟):

Voice.start('zh-CN', {
  pauseDetectionTimeout: 4000,
  maxDuration: 120000 // 最长监听2分钟
});

注意:部分Android设备可能受系统限制,无法设置过长的时长,建议测试验证。

iOS 平台

iOS 默认会在识别到停顿后自动结束会话,你可以开启 continuous: true 模式让识别持续进行,直到手动调用 Voice.stop()。同时可以配合自定义定时器控制最长监听时长:

import Voice from '@react-native-voice/voice';

let sessionTimeout = null;

const startContinuousRecognition = async () => {
  await Voice.requestRecordPermission();
  Voice.start('zh-CN', {
    pauseDetectionTimeout: 4000,
    continuous: true // 持续监听,直到手动停止
  });

  // 自定义2分钟后自动停止识别
  sessionTimeout = setTimeout(() => {
    Voice.stop();
    clearTimeout(sessionTimeout);
  }, 120000);
};

// 用户主动停止识别时调用
const stopRecognition = () => {
  Voice.stop();
  if (sessionTimeout) clearTimeout(sessionTimeout);
};

额外注意事项

  • 确保已正确申请录音权限(通过 Voice.requestRecordPermission()),否则识别功能无法正常工作。
  • 开启 continuous 模式后,识别不会自动终止,必须在合适时机调用 Voice.stop()(比如用户点击停止按钮、达到自定义时长上限)。
  • 部分安卓机型的系统语音识别服务可能对 maxDuration 有上限限制,若设置不生效,可尝试通过原生层面对SpeechRecognizer进行配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:05:20