Flutter语音识别插件voice_recognition_flutter的使用
Flutter语音识别插件voice_recognition_flutter的使用
voice_recognition_flutter
是一个为 Flutter 应用程序提供语音识别功能的插件。它支持多种语言,并允许你实现实时语音转文本的功能。
特性
- 实时语音识别
- 支持多种语言
- 持续识别模式
- 处理语音识别事件
- 获取可用的语言区域列表
平台特定设置
Android
在你的 AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>
基本实现
首先,导入 voice_recognition_flutter
包:
import 'package:voice_recognition_flutter/voice_recognition.dart';
创建一个 VoiceRecognition
实例,并设置首选语言:
// 创建一个语音识别实例
final voiceRecognition = VoiceRecognition();
// 设置识别语言
voiceRecognition.setLanguages("bn-BD"); // 示例为孟加拉语
// 开始监听语音输入
await voiceRecognition.startVoice();
// 停止监听语音输入
await voiceRecognition.stopVoice();
// 获取所有可用的语言区域
final locales = await voiceRecognition.getAllLocal();
设置监听器
你可以设置不同的回调函数来处理语音识别的不同阶段和事件:
voiceRecognition.listenResult(
onReadyForSpeech: (ready) {
// 当识别器准备好时调用
},
onBeginningOfSpeech: (beginning) {
// 当用户开始说话时调用
},
onRmsChanged: (rmsDb) {
// 当音频级别变化时调用
print("音频级别: $rmsDb");
},
onResults: (results) async {
// 当识别结果准备好时调用
print("识别结果: $results");
// 对于持续识别,再次开始监听
await voiceRecognition.startVoice();
},
onError: (error) {
// 错误处理
print("错误: $error");
},
onEndOfSpeech: (end) {
// 当用户停止说话时调用
},
onPartialResults: (partial) {
// 当部分识别结果可用时调用
},
onEvent: (event) {
// 处理其他识别事件
},
);
方法
setLanguages(String locale)
: 设置识别语言startVoice()
: 开始语音识别stopVoice()
: 停止语音识别getAllLocal()
: 获取所有可用的语言区域列表
回调
onReadyForSpeech
: 识别器准备好的时候调用onBeginningOfSpeech
: 用户开始说话时调用onRmsChanged
: 音频级别变化时调用onBufferReceived
: 原始音频缓冲区更新时调用onEndOfSpeech
: 用户停止说话时调用onError
: 错误处理onResults
: 最终识别结果onPartialResults
: 中间识别结果onEvent
: 其他识别事件
支持的语言
该插件支持多种语言。使用 getAllLocal()
方法可以获取设备上可用的语言区域列表。
示例语言区域:
- 英语(美国): “en-US”
- 孟加拉语: “bn-BD”
- 印地语: “hi-IN”
- 等等…
完整示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:voice_recognition_flutter/voice_recognition.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _voicerecognitionPlugin = VoiceRecognition();
var tmpdata = "";
[@override](/user/override)
void initState() {
super.initState();
_voicerecognitionPlugin.setLanguages("bn-BD");
// print(_voicetestPlugin.getAllLocal());
_voicerecognitionPlugin.listenResult(
onReadyForSpeech: (onReadyForSpeech) {},
onBeginningOfSpeech: (onBeginningOfSpeech) {},
onRmsChanged: (onRmsChanged) {
print("音频级别: $onRmsChanged");
},
onBufferReceived: (onBufferReceived) {},
onEndOfSpeech: (onEndOfSpeech) {},
onError: (onError) {
print("错误: $onError");
},
onResults: (onResults) async {
setState(() {
tmpdata = onResults!;
});
// 调用再次以实现连续识别
await _voicerecognitionPlugin.startVoice();
},
onPartialResults: (onPartialResults) {},
onEvent: (onEvent) {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Column(
children: [
Center(
child: Text('运行在: $tmpdata\n'),
),
ElevatedButton(
onPressed: () async {
await _voicerecognitionPlugin.startVoice();
},
child: const Text("开始语音")),
ElevatedButton(
onPressed: () async {
await _voicerecognitionPlugin.stopVoice();
},
child: const Text("停止语音")),
ElevatedButton(
onPressed: () async {
final data = await _voicerecognitionPlugin.getAllLocal();
print(data);
},
child: const Text("本地"))
],
),
),
);
}
}
更多关于Flutter语音识别插件voice_recognition_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter语音识别插件voice_recognition_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用 voice_recognition_flutter
插件的 Flutter 代码示例。这个插件允许你在 Flutter 应用中实现语音识别功能。
首先,确保你已经在 pubspec.yaml
文件中添加了 voice_recognition_flutter
依赖:
dependencies:
flutter:
sdk: flutter
voice_recognition_flutter: ^x.y.z # 请替换为最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来是一个简单的 Flutter 应用示例,演示如何使用 voice_recognition_flutter
插件:
import 'package:flutter/material.dart';
import 'package:voice_recognition_flutter/voice_recognition_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Voice Recognition Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _recognizedText = '';
Future<void> _startVoiceRecognition() async {
try {
List<String> locales = await VoiceRecognitionFlutter.getAvailableLocales();
print('Available locales: $locales');
String result = await VoiceRecognitionFlutter.localizeAndRecognize(
localeId: locales.first, // 使用第一个可用的语言环境
prompt: '请说话',
languageModel: 'free_form', // 或者 'web_search'
);
setState(() {
_recognizedText = result;
});
} catch (e) {
print('Error: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Voice Recognition Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'识别结果:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 10),
Text(
_recognizedText,
style: TextStyle(fontSize: 24, color: Colors.blue),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _startVoiceRecognition,
child: Text('开始语音识别'),
),
],
),
),
);
}
}
解释
-
依赖导入:
- 在
pubspec.yaml
中添加voice_recognition_flutter
依赖。
- 在
-
主应用:
MyApp
是主应用类,包含应用的根 MaterialApp。
-
主页:
MyHomePage
是一个有状态的小部件,包含一个用于显示识别结果的文本和一个按钮。
-
语音识别功能:
_startVoiceRecognition
方法使用VoiceRecognitionFlutter
插件来启动语音识别。getAvailableLocales
获取可用的语言环境列表。localizeAndRecognize
方法启动语音识别,并返回识别结果。
-
UI 更新:
- 使用
setState
方法更新_recognizedText
,从而在 UI 上显示识别结果。
- 使用
请确保在实际部署前测试代码,并根据需要进行调整。由于插件可能更新,请参考插件的官方文档以获取最新和最准确的使用信息。