Flutter语音识别插件speech_to_text_ultra的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter语音识别插件 speech_to_text_ultra 的使用

作者

Souvik Das
LinkedIn Profile

Speech To Text Ultra

这个Flutter插件旨在解决语音识别过程中突然暂停的问题。通过手动控制暂停和播放功能,用户现在可以不间断地口述段落,确保无缝且不间断的语音识别体验。通过改进的语音交互功能提升你的Flutter应用,使用户能够轻松高效地进行交流。

安装

步骤1: 添加依赖

pubspec.yaml 文件中添加最新版本的 speech_to_text_ultra 插件,并运行 dart pub get

dependencies:
  speech_to_text_ultra: ^0.0.3

步骤2: 导入并使用插件

在你的Flutter项目中导入该插件:

import 'package:speech_to_text_ultra/speech_to_text_ultra.dart';

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 speech_to_text_ultra 插件:

import 'package:flutter/material.dart';
import 'package:speech_to_text_ultra/speech_to_text_ultra.dart';

void main() {
  runApp(const SpeechToTextUltraWidgetImplementation());
}

class SpeechToTextUltraWidgetImplementation extends StatefulWidget {
  const SpeechToTextUltraWidgetImplementation({super.key});

  @override
  State<SpeechToTextUltraWidgetImplementation> createState() => _SpeechToTextUltraWidgetImplementationState();
}

class _SpeechToTextUltraWidgetImplementationState extends State<SpeechToTextUltraWidgetImplementation> {
  bool mIsListening = false;
  String mEntireResponse = '';
  String mLiveResponse = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        backgroundColor: Colors.teal,
        centerTitle: true,
        title: const Text('Speech To Text Ultra', style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500)),
      ),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              mIsListening
                  ? Text('$mEntireResponse $mLiveResponse')
                  : Text(mEntireResponse),
              const SizedBox(height: 20),
              SpeechToTextUltra(
                ultraCallback: (String liveText, String finalText, bool isListening) {
                  setState(() {
                    mLiveResponse = liveText;
                    mEntireResponse = finalText;
                    mIsListening = isListening;
                  });
                },
                // toPauseIcon: const Icon(Icons.pause),
                // toStartIcon: const Icon(Icons.mic),
                // pauseIconColor: Colors.black,
                // startIconColor: Colors.black,
              ),
              const SizedBox(height: 10),
            ],
          ),
        ),
      ),
    );
  }
}

用户权限要求

iOS

在你的iOS项目中,将以下键值对添加到 <project root>/ios/Runner/Info.plist 文件中:

<key>NSSpeechRecognitionUsageDescription</key>
<string>In order to perform voice-based tasks, this app requires permission to recognize recorded audio.</string>
<key>NSMicrophoneUsageDescription</key>
<string>In order to perform voice-based tasks, this app requires permission to access the microphone.</string>
  • NSSpeechRecognitionUsageDescription: 解释为什么应用需要访问语音识别权限。
  • NSMicrophoneUsageDescription: 解释为什么应用需要访问麦克风权限。

Android

在你的Android项目中,将以下权限添加到 <project root>/android/app/src/main/AndroidManifest.xml 文件中:

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

更多关于Flutter语音识别插件speech_to_text_ultra的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter语音识别插件speech_to_text_ultra的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用speech_to_text_ultra插件的一个基本示例。这个插件提供了语音识别功能,可以让你轻松地将语音转换为文本。

首先,确保你的Flutter环境已经正确设置,并且你的项目已经创建。接下来,按照以下步骤在你的Flutter项目中使用speech_to_text_ultra插件。

1. 添加依赖

在你的pubspec.yaml文件中添加speech_to_text_ultra依赖:

dependencies:
  flutter:
    sdk: flutter
  speech_to_text_ultra: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Android权限

由于语音识别需要麦克风权限,你需要在AndroidManifest.xml文件中添加以下权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

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

    <!-- 其他配置 -->

</manifest>

3. 请求权限并初始化插件

在你的Flutter代码中,你需要请求麦克风权限并初始化SpeechToTextUltra插件。以下是一个基本的示例:

import 'package:flutter/material.dart';
import 'package:speech_to_text_ultra/speech_to_text_ultra.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Speech to Text Demo'),
        ),
        body: SpeechRecognitionPage(),
      ),
    );
  }
}

class SpeechRecognitionPage extends StatefulWidget {
  @override
  _SpeechRecognitionPageState createState() => _SpeechRecognitionPageState();
}

class _SpeechRecognitionPageState extends State<SpeechRecognitionPage> {
  late SpeechToTextUltra _speechToText;

  @override
  void initState() {
    super.initState();
    _speechToText = SpeechToTextUltra();
    _initialize();
  }

  Future<void> _initialize() async {
    // 请求麦克风权限
    var status = await Permission.microphone.status;
    if (!status.isGranted) {
      Map<Permission, PermissionStatus> statuses = await [
        Permission.microphone,
      ].request();
      status = statuses[Permission.microphone]!;
    }

    if (status.isGranted) {
      // 初始化插件
      bool available = await _speechToText.initialize(
          onStatus: (status) {
            print('Recognition status: $status');
          }, onError: (msg) {
            print('Recognition error: $msg');
          });

      if (available) {
        setState(() {});
      }
    } else {
      print('Microphone permission is denied');
    }
  }

  Future<void> _listen() async {
    try {
      bool result = await _speechToText.listen(
        onResult: (result, locale) {
          print('Recognition result: $result');
        },
        cancelOnError: true,
        listenFor: Duration(seconds: 5),
        pauseFor: Duration(seconds: 1),
        localeId: _speechToText.localeId,
      );

      if (!result) {
        print('Listening failed.');
      }
    } catch (e) {
      print('Error listening: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: _listen,
        child: Text('Start Listening'),
      ),
    );
  }
}

4. 运行应用

确保你的设备或模拟器连接正确,然后运行你的Flutter应用:

flutter run

点击按钮后,应用应该会请求麦克风权限(如果尚未授予),然后开始监听语音输入并将其转换为文本。

请注意,这个示例仅展示了插件的基本用法。根据你的具体需求,你可能需要添加更多的错误处理、UI反馈或其他功能。同时,确保你遵循了插件的文档和最佳实践,以获得最佳的用户体验和性能。

回到顶部