Flutter语音识别评估插件azure_speech_assessment的使用
Flutter语音识别评估插件azure_speech_assessment的使用
azure_speech_assessment
本项目基于以下两个项目的代码:
- cristianbregant: https://github.com/cristianbregant/azure_speech_recognition
- jjordanoc:https://github.com/jjordanoc/azure_speech_recognition_null_safety
开始使用
此项目是使用Azure语音识别服务的起点。
要使用此插件,您必须已经在认知服务页面上创建了一个账户。
安装
要安装该包,请使用最新版本:
dependencies:
azure_speech_assessment: ^0.0.7
使用方法
首先,导入插件:
import 'package:azure_speech_assessment/azure_speech_assessment.dart';
初始化
有两种类型的初始化器:
简单初始化器
应在除意图识别外的所有情况下使用。默认语言设置为"en-EN",但您可以根据需要更改(如果支持)。默认静音超时时间为1000毫秒。(它必须是一个介于100到5000之间的整数)
AzureSpeechAssessment.initialize("your_subscription_key", "your_server_region", lang: "it-IT", timeout: 3000);
意图初始化器
仅在意图识别时使用。默认语言设置为"en-EN",但您可以根据需要更改(如果支持)。
AzureSpeechAssessment.initializeLanguageUnderstanding("your_language_subscription_key", "your_language_server_region", "your_language_appId", lang: "it-IT");
识别类型
简单语音识别(支持Android和iOS)
识别完成后返回响应。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:azure_speech_assessment/azure_speech_assessment.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final AzureSpeechAssessment _speechAzure = AzureSpeechAssessment();
String subscriptionKey = "your_key";
String serverRegion = "your_server_region";
String language = "it-IT";
void activateSpeechRecognizer() {
// 必须的初始化
AzureSpeechAssessment.initialize(subscriptionKey, serverRegion, lang: language);
_speechAzure.setFinalTranscription((text) {
// 对最终转录进行操作
});
_speechAzure.setRecognitionStartedHandler(() {
// 在识别开始时调用(可以不使用)
});
}
[@override](/user/override)
void initState() {
super.initState();
activateSpeechRecognizer();
}
Future<void> recognizeVoice() async {
try {
await AzureSpeechAssessment.simpleVoiceRecognition();
} on PlatformException catch (e) {
print("启动识别失败: '${e.message}'.");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter语音识别'),
),
body: Center(
child: ElevatedButton(
onPressed: recognizeVoice,
child: Text('开始语音识别'),
),
),
);
}
}
带麦克风流的语音识别
通过麦克风流返回临时短语,并在识别结束时返回最终响应。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:azure_speech_assessment/azure_speech_assessment.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final AzureSpeechAssessment _speechAzure = AzureSpeechAssessment();
String subscriptionKey = "your_key";
String serverRegion = "your_server_region";
String language = "it-IT";
void activateSpeechRecognizer() {
// 必须的初始化
AzureSpeechAssessment.initialize(subscriptionKey, serverRegion, lang: language);
_speechAzure.setFinalTranscription((text) {
// 对最终转录进行操作
});
_speechAzure.setRecognitionResultHandler((text) {
// 对部分转录进行操作(每次识别一个单词时都会调用)
// 如果您有一个显示字符串,可以在这里调用setState()以更新部分结果
});
_speechAzure.setRecognitionStartedHandler(() {
// 在识别开始时调用(可以不使用)
});
}
[@override](/user/override)
void initState() {
super.initState();
activateSpeechRecognizer();
}
Future<void> recognizeVoiceMicStreaming() async {
try {
await AzureSpeechAssessment.micStream();
} on PlatformException catch (e) {
print("启动识别失败: '${e.message}'.");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter语音识别'),
),
body: Center(
child: ElevatedButton(
onPressed: recognizeVoiceMicStreaming,
child: Text('开始语音识别'),
),
),
);
}
}
意图识别
意图识别返回临时短语,并在识别结束时返回最终响应。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:azure_speech_assessment/azure_speech_assessment.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final AzureSpeechAssessment _speechAzure = AzureSpeechAssessment();
String subscriptionKey = "your_language_subscription_key";
String serverRegion = "your_language_server_region";
String appId = "your_language_appId";
String language = "it-IT";
void activateSpeechRecognizer() {
// 必须的初始化
AzureSpeechAssessment.initializeLanguageUnderstanding(subscriptionKey, serverRegion, appId, lang: language);
_speechAzure.setFinalTranscription((text) {
// 对最终转录进行操作
});
_speechAzure.setRecognitionResultHandler((text) {
// 对部分转录进行操作(每次识别一个单词时都会调用)
// 如果您有一个显示字符串,可以在这里调用setState()以更新部分结果
});
_speechAzure.setRecognitionStartedHandler(() {
// 在识别开始时调用(可以不使用)
});
}
[@override](/user/override)
void initState() {
super.initState();
activateSpeechRecognizer();
}
Future<void> speechIntentRecognizer() async {
try {
await AzureSpeechAssessment.intentRecognizer();
} on PlatformException catch (e) {
print("启动识别失败: '${e.message}'.");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter语音识别'),
),
body: Center(
child: ElevatedButton(
onPressed: speechIntentRecognizer,
child: Text('开始意图识别'),
),
),
);
}
}
更多关于Flutter语音识别评估插件azure_speech_assessment的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter语音识别评估插件azure_speech_assessment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用azure_speech_assessment
插件进行语音识别评估的示例代码。这个插件允许你利用Azure的认知服务来进行语音识别评估。
首先,确保你已经在你的Flutter项目中添加了azure_speech_assessment
依赖。你可以在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
azure_speech_assessment: ^最新版本号 # 请替换为当前可用的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你需要配置Azure的认知服务。这通常涉及获取一个API密钥和订阅ID,并配置服务区域。这些配置信息不应硬编码在客户端应用中,而是应该安全地存储和检索。
以下是一个简单的Flutter应用示例,展示了如何使用azure_speech_assessment
插件:
import 'package:flutter/material.dart';
import 'package:azure_speech_assessment/azure_speech_assessment.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _controller = TextEditingController();
String _result = '';
@override
void dispose() {
_controller.dispose();
super.dispose();
}
Future<void> startSpeechAssessment() async {
// 配置Azure认知服务信息
final config = SpeechAssessmentConfig(
subscription: '你的订阅密钥', // 替换为你的Azure订阅密钥
region: '你的服务区域', // 替换为你的Azure服务区域,例如 'westus'
);
// 创建SpeechAssessment实例
final speechAssessment = SpeechAssessment(config: config);
// 监听结果
speechAssessment.resultStream.listen((result) {
setState(() {
_result = result.recognitionText; // 获取识别文本
// 你可以在这里处理评估结果,比如获取评估分数等
});
});
// 开始语音识别评估
try {
await speechAssessment.startListening();
} catch (e) {
print('Error starting speech assessment: $e');
}
}
Future<void> stopSpeechAssessment() async {
// 停止语音识别评估(这里假设你已经有一个实例speechAssessment)
// 注意:实际使用中,你需要管理speechAssessment的生命周期
try {
await speechAssessment.stopListening();
} catch (e) {
print('Error stopping speech assessment: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Azure Speech Assessment Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
controller: _controller,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Input Text (for demo, not actually used for speech)',
),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: startSpeechAssessment,
child: Text('Start Speech Assessment'),
),
SizedBox(height: 10),
ElevatedButton(
onPressed: stopSpeechAssessment, // 注意:这里需要管理speechAssessment实例
child: Text('Stop Speech Assessment'),
),
SizedBox(height: 20),
Text('Recognition Result: $_result'),
],
),
),
),
);
}
}
注意:
-
上述代码中的
speechAssessment
实例在startSpeechAssessment
和stopSpeechAssessment
方法之间需要被正确管理。在实际应用中,你可能需要将speechAssessment
实例提升为类的成员变量,以便在多个方法之间共享。 -
subscription
和region
需要替换为你自己的Azure认知服务信息。 -
TextField
在这个示例中仅用于展示,实际上并不用于语音识别输入。在实际应用中,你将通过设备的麦克风进行输入。 -
请确保你已经在Azure门户中启用了认知服务,并获取了有效的API密钥和订阅ID。
-
由于
azure_speech_assessment
插件的具体API可能会随时间变化,请参考最新的插件文档以获取最准确的信息。