Flutter如何实现Android语音识别

在Flutter中如何实现Android平台的语音识别功能?需要集成哪些插件或SDK?能否提供具体的代码示例和配置步骤?另外,如何处理权限申请和语音识别的回调结果?

2 回复

使用Flutter实现Android语音识别,可通过speech_to_text插件。步骤如下:

  1. 添加依赖:在pubspec.yaml中添加speech_to_text: ^6.6.0
  2. 请求权限:在AndroidManifest.xml中添加录音权限。
  3. 初始化并监听语音输入,调用listen()开始识别,stop()结束。

示例代码:

SpeechToText speech = SpeechToText();
bool available = await speech.initialize();
if (available) {
  speech.listen(onResult: (result) {
    print(result.recognizedWords);
  });
}

更多关于Flutter如何实现Android语音识别的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现Android语音识别,可以使用speech_to_text插件。以下是实现步骤:

1. 添加依赖

pubspec.yaml中添加:

dependencies:
  speech_to_text: ^6.6.0

2. 配置权限

android/app/src/main/AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />

3. 基本实现代码

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

class SpeechScreen extends StatefulWidget {
  @override
  _SpeechScreenState createState() => _SpeechScreenState();
}

class _SpeechScreenState extends State<SpeechScreen> {
  stt.SpeechToText _speech = stt.SpeechToText();
  bool _isListening = false;
  String _text = 'Press button and start speaking';

  @override
  void initState() {
    super.initState();
    _initSpeech();
  }

  _initSpeech() async {
    bool available = await _speech.initialize(
      onStatus: (status) => print('Status: $status'),
      onError: (error) => print('Error: $error'),
    );
    if (!available) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('语音识别不可用')),
      );
    }
  }

  _listen() async {
    if (!_isListening) {
      bool available = await _speech.initialize(
        onStatus: (status) => print('Status: $status'),
        onError: (error) => print('Error: $error'),
      );
      if (available) {
        setState(() => _isListening = true);
        _speech.listen(
          onResult: (result) => setState(() {
            _text = result.recognizedWords;
          }),
          localeId: 'zh-CN', // 中文识别
        );
      }
    } else {
      setState(() => _isListening = false);
      _speech.stop();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('语音识别')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_text, style: TextStyle(fontSize: 20)),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _listen,
              child: Text(_isListening ? '停止录音' : '开始录音'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 关键说明

  • 初始化:调用initialize()检查设备支持情况
  • 监听控制listen()开始识别,stop()停止识别
  • 语言设置:通过localeId参数设置识别语言(如:'zh-CN’中文,'en-US’英文)
  • 权限处理:首次使用会自动请求录音权限

5. 扩展功能

  • 实时显示识别置信度:result.confidence
  • 处理部分结果:listen()设置partialResults: true
  • 错误处理:在onError回调中处理识别错误

这个方案支持离线识别(需设备支持),兼容Android 5.0+,可识别多种语言。

回到顶部