Flutter语音标签插件voice_label的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter语音标签插件voice_label的使用

voice_label

A new Flutter widget. A Label widget that can play audio.

plume flutter pub package


使用示例

以下是一个完整的示例代码,展示如何在Flutter项目中使用voice_label插件。

示例代码

import 'package:flutter/material.dart';
import 'package:voice_label/com/wonderingwall/widgets/voice_label.dart'; // 导入voice_label插件

void main() {
  runApp(const MyApp()); // 应用入口
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // 构建应用根组件
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue, // 设置主题颜色为蓝色
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'), // 设置首页
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState(); // 定义状态类
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0; // 定义计数器变量

  void _incrementCounter() {
    setState(() {
      _counter++; // 增加计数器
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title), // 设置应用标题
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center, // 垂直居中布局
          children: [
            const Text('你点击按钮的次数:'), // 显示文本
            Text(
              '$_counter', // 动态显示计数器值
              style: Theme.of(context).textTheme.headline4,
            ),
            // 使用VoiceLabel组件,添加语音播放功能
            const VoiceLabel(
              "我有音乐", // 显示的文字
              assetPath: "assets/voice/temp.mp3", // 音频文件路径
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter, // 点击按钮触发计数器增加
        tooltip: '增加', // 提示文字
        child: const Icon(Icons.add), // 图标
      ),
    );
  }
}

说明

  1. 导入插件
    在代码顶部通过import 'package:voice_label/com/wonderingwall/widgets/voice_label.dart';导入voice_label插件。

  2. VoiceLabel组件
    VoiceLabel是一个可播放音频的标签组件。它有两个主要参数:

    • text: 显示的文本内容。
    • assetPath: 音频文件的路径(支持本地资源)。
  3. 运行效果
    当用户点击页面上的文字时,会触发音频播放。同时,点击浮动按钮会增加计数器的值,并更新页面显示。


运行结果

运行上述代码后,你会看到一个带有计数器和语音播放功能的简单页面:

  • 页面中央显示“你点击按钮的次数”,并动态更新计数值。
  • 点击“我有音乐”文字时,会播放指定的音频文件。


注意事项

  1. 音频文件路径
    确保assetPath指向的音频文件已正确添加到pubspec.yaml文件中,并且路径格式正确。

    assets:
      - assets/voice/temp.mp3
  2. 依赖安装
    在使用voice_label之前,确保已在pubspec.yaml中添加依赖:

    dependencies:
      voice_label: ^1.0.3

更多关于Flutter语音标签插件voice_label的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter语音标签插件voice_label的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


voice_label 是一个用于在 Flutter 应用中实现语音标签功能的插件。它允许用户通过语音输入来创建标签,并将这些标签显示在应用中。以下是如何使用 voice_label 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 voice_label 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  voice_label: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 voice_label 插件:

import 'package:voice_label/voice_label.dart';

3. 使用 VoiceLabel 组件

VoiceLabel 是一个可以显示语音标签的组件。你可以将它添加到你的 UI 中,并配置相关参数。

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<String> labels = [];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Voice Label Example'),
      ),
      body: Column(
        children: [
          VoiceLabel(
            onLabelAdded: (String label) {
              setState(() {
                labels.add(label);
              });
            },
          ),
          Expanded(
            child: ListView.builder(
              itemCount: labels.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(labels[index]),
                );
              },
            ),
          ),
        ],
      ),
    );
  }
}

4. 配置 VoiceLabel 参数

VoiceLabel 组件有一些可配置的参数,例如:

  • onLabelAdded: 当用户通过语音输入添加标签时触发的回调函数。
  • hintText: 输入框的提示文本。
  • maxLabels: 允许添加的最大标签数量。
VoiceLabel(
  onLabelAdded: (String label) {
    setState(() {
      labels.add(label);
    });
  },
  hintText: 'Say something...',
  maxLabels: 5,
),

5. 处理语音输入

VoiceLabel 组件会自动处理语音输入,并将识别出的文本作为标签添加到列表中。你可以在 onLabelAdded 回调中处理这些标签。

6. 运行应用

现在你可以运行你的 Flutter 应用,并使用 VoiceLabel 组件来添加语音标签。

7. 其他功能

voice_label 插件可能还提供其他功能,例如删除标签、编辑标签等。你可以查阅插件的文档或源码来了解更多信息。

8. 注意事项

  • 确保你的设备支持语音识别功能。
  • 在 iOS 上,你可能需要在 Info.plist 中添加 NSSpeechRecognitionUsageDescription 来请求语音识别权限。
<key>NSSpeechRecognitionUsageDescription</key>
<string>We need access to speech recognition to convert your voice into text.</string>

9. 示例代码

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:voice_label/voice_label.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Voice Label Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<String> labels = [];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Voice Label Example'),
      ),
      body: Column(
        children: [
          VoiceLabel(
            onLabelAdded: (String label) {
              setState(() {
                labels.add(label);
              });
            },
            hintText: 'Say something...',
            maxLabels: 5,
          ),
          Expanded(
            child: ListView.builder(
              itemCount: labels.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(labels[index]),
                );
              },
            ),
          ),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!