Flutter如何实现语音转文字功能

在Flutter中如何实现语音转文字的功能?有没有推荐的插件或库?具体实现步骤是怎样的?希望有大佬能分享一下经验,最好能附带代码示例,非常感谢!

2 回复

Flutter可通过插件实现语音转文字,推荐使用speech_to_text插件。步骤如下:

  1. 添加依赖到pubspec.yaml
  2. 请求麦克风权限。
  3. 初始化插件并监听语音识别结果。
  4. 调用listen()开始识别,语音实时转换为文字。

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


在Flutter中实现语音转文字功能,可以使用speech_to_text插件。以下是实现步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  speech_to_text: ^6.6.0

运行 flutter pub get

2. 基本实现代码

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 = '点击按钮开始语音识别';

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

  void _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('语音识别不可用')),
      );
    }
  }

  void _listen() async {
    if (!_isListening) {
      bool available = await _speech.listen(
        onResult: (result) => setState(() {
          _text = result.recognizedWords;
        }),
        localeId: 'zh_CN', // 中文识别
      );
      if (available) {
        setState(() => _isListening = true);
      }
    } else {
      _speech.stop();
      setState(() => _isListening = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('语音转文字')),
      body: Padding(
        padding: EdgeInsets.all(16),
        child: Column(
          children: [
            Expanded(
              child: Container(
                padding: EdgeInsets.all(16),
                decoration: BoxDecoration(
                  border: Border.all(color: Colors.grey),
                  borderRadius: BorderRadius.circular(8),
                ),
                child: Text(_text),
              ),
            ),
            SizedBox(height: 20),
            FloatingActionButton(
              onPressed: _listen,
              child: Icon(_isListening ? Icons.mic : Icons.mic_none),
            ),
          ],
        ),
      ),
    );
  }
}

3. 关键配置说明

  • 初始化:调用 initialize() 检查设备支持情况
  • 语言设置:通过 localeId 参数设置识别语言(中文用 zh_CN
  • 权限处理:需要添加录音权限
    • Android: 在 AndroidManifest.xml 添加:
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      
    • iOS: 在 Info.plist 添加:
      <key>NSMicrophoneUsageDescription</key>
      <string>需要麦克风权限进行语音识别</string>
      

4. 注意事项

  • 真机测试:需要在真实设备上测试,模拟器可能无法使用
  • 网络依赖:部分功能需要网络连接(云端识别)
  • 错误处理:妥善处理权限拒绝和设备不支持的情况

这个实现提供了基本的语音识别功能,可以根据需要扩展错误处理、语音波形显示等高级功能。

回到顶部