搜索插件、代码仓与 APP 分类

插件详情v0.0.3

waveform_fft

一个用于使用 FFT(快速傅里叶变换)进行实时音频可视化以及使用麦克风数据进行音频捕获的 Flutter 包

AndroidiOSLinux
近 30 天下载
27
喜欢数
32
Pub 分数
150

安装插件

flutter pub add waveform_fft

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Waveform_FFT 是一个 Flutter 包,通过使用快速傅里叶变换(FFT)处理麦克风输入,实现音频的实时可视化。它从设备麦克风捕获音频数据,并将其转换为波形和频谱图,非常适合音乐应用、音频分析器或交互式声音项目。该包支持 Android、iOS 和 Linux 平台,适用于跨平台音频应用。通过 pub add 进行最少配置,开发者即可将实时音频分析集成到其 Flutter 应用中。

适合场景

  • 实时音频可视化
  • 音乐应用开发
  • 音频频谱分析
  • 互动声音装置
  • 基于语音的用户界面反馈

主要特点

  • 实时FFT处理
  • 麦克风音频捕获
  • 跨平台支持(Android、iOS、Linux)
  • 与 Flutter 的简单集成
  • 视觉波形和频率显示

适合对象

  • 音频可视化应用
  • 音乐和节奏游戏
  • 声控交互界面
  • 用于音频分析的教育工具
  • 现场演出应用

使用建议

  • 需要目标设备的麦克风权限
  • 性能在低端硬件上可能有所不同
  • 某些平台上的背景音频处理受到限制
  • 可能需要额外配置才能获得最佳音频质量
  • 不适用于高精度音频录制

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

waveform_fft

A Flutter package for real-time audio visualization using FFT (Fast Fourier Transform). This package captures audio input and displays it as an animated waveform using fl_chart.

Features

  • Real-time audio capture and frequency analysis
  • Customizable frequency spectrum ranges
  • Smooth animated waveform visualization
  • Support for different sample rates and buffer sizes
  • Easy-to-use API

Getting Started

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  waveform_fft: ^0.0.1
Platform Setup
Android

Add the following permissions to your android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
iOS

Add the following keys to your ios/Runner/Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to microphone to visualize audio.</string>
Customizing the Waveform

The WaveFormWidgetEq widget accepts several parameters for customization:

WaveFormWidgetEq(
  data: data,                                           // Frequency data
  animationDuration: Duration(milliseconds: 200),       // Animation speed
  updateInterval: Duration(milliseconds: 48),           // Update frequency
  barWidth: 5.0,                                       // Width of each bar
  maxY: 80.0,                                          // Maximum Y value
  minY: -80.0,                                         // Minimum Y value
  barColor: Colors.white,                              // Color of bars
  barAlpha: 0.5,                                       // Opacity of bars
);
Audio Capture Service

The AudioCaptureService can be customized with different sample rates and buffer sizes:

final service = AudioCaptureService(
  sampleRate: 44100,    // Default: 44100 Hz
  bufferSize: 256,      // Default: 256 samples
);

Note: The AudioCaptureService is a singleton and should be initialized once in your application.

Example

Here's a demo of the audio visualization in action:

Audio Visualization Demo

The example above demonstrates:

  • Real-time audio capture from device microphone
  • FFT processing of audio data
  • Animated waveform visualization
  • Responsive UI with start/stop recording controls

Check out the complete example code in the /example directory to see how to implement this in your app.

Frequency Spectrum

The package includes predefined frequency spectrum ranges from 0Hz to 22kHz, following standard audio frequency bands. You can customize these ranges by modifying the AudioWaveFormConstants.defaultFrequencySpectrum.

Performance Considerations
  • Higher sample rates provide better frequency resolution but require more processing power
  • Smaller buffer sizes reduce latency but may cause performance issues
  • Consider device capabilities when adjusting these parameters

Compatibility

  • Android: API 21+
  • iOS: iOS 13.0+
  • If you do not want to use raw audio data by microphone then you can use any other flutter package like record or flutter_sound etc for audio recording purpose.

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Inspiration

所属分类

依赖

依赖清单 3 项

源码仓库

使用此插件的项目

暂无相关数据。