Flutter插件xfmsc的使用方法介绍
xfise
A new Flutter plugin project.
开始使用
这个项目是一个用于Flutter的插件包起点,属于一种专门的插件类型,包含Android和/或iOS平台特定的实现代码。
对于Flutter开发的帮助,您可以查看在线文档,它提供了教程、示例、移动开发指导以及完整的API参考。
发布
修改版本号
- pubspec.yaml
- xfmsc.podspec
- build.gradle
export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;
flutter pub publish --server=https://pub.dartlang.org;
示例代码
example/lib/main.dart
// ignore_for_file: avoid_print
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:xfmsc/ise/evaluator_listener_interface.dart';
import 'package:xfmsc/ise/evaluator_result.dart';
import 'package:xfmsc/ise/speech_evaluator_interface.dart';
import 'package:xfmsc/msc/msc_error.dart';
import 'package:xfmsc/xfmsc.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> implements EvaluatorListener {
bool _isEvaluating = false;
bool _sdkIsEvaluating = false;
String _result = '';
final FocusNode _textFocus = FocusNode();
final TextEditingController _textController = TextEditingController();
final speechEvaluator = Xfmsc.getSpeechEvaluator();
[@override](/user/override)
void initState() {
super.initState();
initSpeechEvaluator();
}
[@override](/user/override)
void dispose() {
super.dispose();
speechEvaluator.removeEvaluatingListener(this);
}
// 初始化语音评估器
Future<void> initSpeechEvaluator() async {
try {
// 初始化XFMSC SDK,传入固定appId
await Xfmsc.init('530601f5');
// 设置参数
await speechEvaluator.setParameters({
// 设置语言为英语
SpeechEvaluatorParam.ent: 'en_vip',
// 设置题目类型为读句子
SpeechEvaluatorParam.category: 'read_sentence',
// 设置编码为UTF-8
SpeechEvaluatorParam.textEncoding: 'utf-8',
// 禁用静音抑制
SpeechEvaluatorParam.vadEnable: '0',
// 设置音频格式为wav
SpeechEvaluatorParam.audioFormat: 'wav',
// 设置音频保存路径
SpeechEvaluatorParam.audioPath:
'${(await getTemporaryDirectory()).absolute.path}/speech/latest.wav',
// 设置评分模式为百分制
SpeechEvaluatorParam.iseUnite: '1',
// 设置结果类型为整体评分
SpeechEvaluatorParam.rst: 'entirety',
// 设置额外能力指标
SpeechEvaluatorParam.extraAbility:
'syll_phone_err_msg;pitch;multi_dimension',
});
// 添加监听器
speechEvaluator.addEvaluatingListener(this);
setState(() {
_result += 'SDK已初始化\n';
});
} catch (e) {
setState(() {
_result += '出错了$e\n';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Container(
margin: const EdgeInsets.all(30),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('是否在录音: $_isEvaluating'),
Text('SDK是否在录音: $_sdkIsEvaluating'),
Container(
margin: const EdgeInsets.only(top: 10),
child: SizedBox(
height: 250,
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Text(_result),
),
),
),
TextField(
controller: _textController,
focusNode: _textFocus,
onTapOutside: (_) {
_textFocus.unfocus();
},
decoration: const InputDecoration(
hintText: 'Apple pie.',
),
),
MaterialButton(
color: Colors.green,
child: const Text('开始评测'),
onPressed: () async {
if (await Permission.microphone.request().isGranted) {
final startResult = await speechEvaluator.startEvaluating(
_textController.text.isEmpty
? 'Apple pie.'
: _textController.text,
null);
final isEvaluating = await speechEvaluator.isEvaluating();
if (startResult == 0) {
setState(() {
_isEvaluating = true;
_sdkIsEvaluating = isEvaluating;
_result += '开始评测\n';
});
} else {
setState(() {
_result += '开始评测失败: $startResult\n';
});
}
} else {
setState(() {
_result += '没有录音权限\n';
});
}
},
),
MaterialButton(
color: Colors.red,
child: const Text('结束评测'),
onPressed: () async {
await speechEvaluator.stopEvaluating();
setState(() {
_result += '结束评测\n';
});
},
),
MaterialButton(
color: Colors.orange,
child: const Text('取消'),
onPressed: () async {
await speechEvaluator.cancel();
final isEvaluating = await speechEvaluator.isEvaluating();
setState(() {
_isEvaluating = false;
_sdkIsEvaluating = isEvaluating;
_result += '取消评测\n';
});
},
)
],
),
),
),
);
}
[@override](/user/override)
void onBeginOfSpeech() {
print('EvaluatorListener, onBeginOfSpeech');
setState(() {
_result += 'onBeginOfSpeech\n';
});
}
[@override](/user/override)
void onEndOfSpeech() {
print('EvaluatorListener, onEndOfSpeech');
setState(() {
_result += 'onEndOfSpeech\n';
});
}
[@override](/user/override)
void onError(MscError error) async {
print(
'EvaluatorListener, onError, ${error.errorCode}, ${error.errorDescription}');
final isEvaluating = await speechEvaluator.isEvaluating();
setState(() {
_isEvaluating = false;
_sdkIsEvaluating = isEvaluating;
_result += 'onError: ${error.errorDescription}\n';
});
}
[@override](/user/override)
void onResult(EvaluatorResult? result, bool isLast) async {
print('EvaluatorListener, onResult, ${result?.resultString}, $isLast');
if (isLast) {
final isEvaluating = await speechEvaluator.isEvaluating();
setState(() {
_isEvaluating = false;
_sdkIsEvaluating = isEvaluating;
_result += result?.resultString ?? '评测结果为null?\n';
});
}
}
[@override](/user/override)
void onVolumeChanged(int volume) {}
}
1 回复
更多关于Flutter插件xfmsc的使用方法介绍的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,使用第三方插件可以极大地提高开发效率。然而,有时你可能会遇到一些不太常见或文档不完善的插件,比如你提到的 xfmsc
。由于 xfmsc
并不是一个广为人知的插件,以下是一些探索和使用未知插件的通用步骤,帮助你更好地理解和使用它。
1. 查找插件的来源和文档
- Pub.dev: 首先,检查 pub.dev 上是否有
xfmsc
插件的发布页面。Pub.dev 是 Flutter 官方插件仓库,通常可以找到插件的文档、版本信息和依赖关系。 - GitHub: 如果 pub.dev 上没有找到,可以尝试在 GitHub 上搜索
xfmsc
,看看是否有相关的开源项目。GitHub 项目通常会有 README 文件,提供插件的使用说明。 - 其他资源: 如果以上方法都没有找到,可以尝试在 Flutter 社区、论坛或博客中搜索相关信息。
2. 阅读插件的源代码
如果插件的文档不完善,或者你找不到相关的使用说明,可以直接阅读插件的源代码。Flutter 插件通常是用 Dart 编写的,代码结构相对清晰。
- lib 目录: 这是插件的主要代码目录,通常包含插件的核心功能。
- example 目录: 很多插件会提供一个示例项目,展示如何使用插件。你可以参考这个示例来理解插件的使用方法。
- README.md: 如果插件有 README 文件,通常会包含基本的使用说明和示例代码。
3. 尝试在项目中集成插件
一旦你对插件有了一定的了解,可以尝试在项目中集成它。
- 添加依赖: 在
pubspec.yaml
文件中添加插件的依赖项。例如:dependencies: xfmsc: ^1.0.0 # 替换为实际的版本号
- 导入插件: 在 Dart 文件中导入插件:
import 'package:xfmsc/xfmsc.dart';