Flutter如何实现本地连续监听语音输入并翻译为文字

在Flutter中如何实现实时监听设备麦克风的语音输入,并将其连续转换为文字?需要使用哪些插件或API?最好能支持离线的语音识别功能,并且能处理长时间录音的场景。能否提供一个完整的代码示例或实现思路?

2 回复

使用Flutter的speech_to_text插件实现本地连续语音监听,通过listen方法持续捕获语音,将识别结果实时显示为文字。可结合翻译API(如Google Translate)实现即时翻译。注意处理权限和错误情况。

更多关于Flutter如何实现本地连续监听语音输入并翻译为文字的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现本地连续监听语音输入并翻译为文字,可以通过以下步骤实现:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  speech_to_text: ^6.6.0
  translator: ^3.0.1

2. 实现语音监听

使用 speech_to_text 包进行语音识别:

import 'package:speech_to_text/speech_to_text.dart' as stt;

class SpeechTranslator {
  final stt.SpeechToText _speech = stt.SpeechToText();
  final Translator _translator = Translator();
  
  Future<void> startListening(Function(String) onResult) async {
    bool available = await _speech.initialize();
    if (available) {
      _speech.listen(
        onResult: (result) {
          if (result.finalResult) {
            String recognizedText = result.recognizedWords;
            _translateText(recognizedText, onResult);
          }
        },
        listenFor: Duration(minutes: 5), // 持续监听5分钟
        pauseFor: Duration(seconds: 3),  // 静默3秒后暂停
      );
    }
  }

  void stopListening() {
    _speech.stop();
  }
}

3. 实现翻译功能

使用 translator 包进行文本翻译:

Future<void> _translateText(String text, Function(String) callback) async {
  try {
    var translation = await _translator.translate(text, from: 'auto', to: 'zh');
    callback(translation.text);
  } catch (e) {
    print('翻译错误: $e');
  }
}

4. 在UI中使用

String _translatedText = '';

void _onTranslationResult(String text) {
  setState(() {
    _translatedText = text;
  });
}

// 开始监听
FloatingActionButton(
  onPressed: () => SpeechTranslator().startListening(_onTranslationResult),
  child: Icon(Icons.mic),
)

// 显示结果
Text(_translatedText)

注意事项:

  1. 需要申请麦克风权限(android: RECORD_AUDIO, iOS: Microphone Usage Description
  2. 翻译服务可能需要网络连接
  3. 建议添加错误处理和加载状态
  4. 实时翻译时注意API调用频率限制

这种方式可以实现基本的连续语音监听和实时翻译功能,实际使用时可以根据需求调整监听参数和翻译语言对。

回到顶部