Flutter语音识别插件speech_to_text_ultra的使用
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
更多关于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反馈或其他功能。同时,确保你遵循了插件的文档和最佳实践,以获得最佳的用户体验和性能。