You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何使用just_audio包FFT功能实现音频比对开发语音调音器

just_audio Beta版FFT特性使用指导

前置配置

首先在pubspec.yaml中引入包含FFT特性的beta版本包,无需额外依赖其他音频处理库。

核心使用步骤

  • 初始化音频播放器时配置FFT参数,示例代码:
import 'package:just_audio/just_audio.dart';

// fftSize必须为2的幂次,数值越大频率分辨率越高、延迟越高
// 调音器场景推荐设置为4096或8192,可根据精度需求调整
final player = AudioPlayer(
  fftConfiguration: FftConfiguration(
    fftSize: 8192,
    minFrequency: 80,
    maxFrequency: 1000, // 覆盖人声常用频率范围,减少无效计算
  ),
);
  • 加载目标mp3音频,和普通播放场景用法一致:
// 可传本地文件路径或网络资源地址
await player.setAudioSource(AudioSource.uri(Uri.parse('你的音频资源地址')));
  • 监听FFT数据流获取频率数据:
// 音频播放过程中会持续回调FFT计算结果
player.fftDataStream.listen((fftData) {
  // fftData.frequencies为当前帧的所有频率点数组,单位Hz
  // fftData.magnitudes为对应频率点的幅值,幅值越高代表该频率成分占比越大
  // 此处可插入你的频率比对逻辑:分别存储两段音频的FFT序列,对齐时间戳后计算相似度即可
  // 调音器场景可优先提取当前帧幅值最高的点作为基频,直接比对基频差值即可
});
  • 按需启动音频处理:如果不需要播放声音仅做FFT计算,可设置静音后播放:
await player.setVolume(0);
await player.play();

注意事项

  • 仅在音频播放状态下会输出FFT数据,暂停/停止状态下流无回调
  • beta版本API可能存在变动,若出现方法不存在的报错可核对你使用的包版本和对应API定义适配
  • 处理本地音频文件前需提前申请对应平台的存储读取权限

内容的提问来源于stack exchange,提问作者Kakomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:09:02