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

如何使用speech_to_text库设置语音输入结束后的等待时长?

解决speech_to_text库中语音停顿提前终止识别的问题

speech_to_text库提供了pauseFor参数来解决这个问题,该参数可以设置在检测到语音停顿后,等待指定时长再终止音频输入,正好满足你需要等待3秒的需求。

你只需要在调用_speech.listen()时添加pauseFor参数即可,修改后的语音处理后端代码如下:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:speech_to_text/speech_to_text.dart';

class Speech {
    static final _speech = SpeechToText();
    static Timer? _timer;
    static Future<bool> toggleRecording({required Function(String text) onResult, required ValueChanged<bool> onListening}) async {
      final isAvailable = await _speech.initialize(
        onStatus: (status) {
          return onListening(_speech.isListening);
        },
        onError: (error) {
          print('Error $error');
        },

      );
      if (isAvailable) {
        _speech.listen(
          partialResults: true,
          onResult: (value) {
            onResult(value.recognizedWords);
            print(onResult(value.recognizedWords));

          },
          listenFor: Duration(seconds: 10),
          // 添加pauseFor参数,设置停顿后等待3秒再终止
          pauseFor: Duration(seconds: 3),
        );
      }
      return isAvailable;
    }
  }

参数说明:

  • pauseFor: Duration(seconds: 3):当识别到用户语音停顿后,会等待3秒,如果这段时间内没有新的语音输入,才会停止识别;如果用户在3秒内继续说话,识别会继续进行。
  • listenFor: Duration(seconds: 10):保持原有的最长监听时长设置,避免无限等待的情况。
  • partialResults: true:继续开启实时返回部分识别结果的功能,不影响停顿等待的逻辑。

这样修改后,用户说话时的短暂停顿就不会导致识别提前终止,能完整捕捉到整个语句内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:48