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';
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!