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

如何在Python中基于Librosa实现麦克风输入的MFCC提取与显示?

问题修复:录制音频并提取显示MFCC

代码存在的问题

  • 核心错误:librosa.load()用于加载本地音频文件,不能直接传入sounddevice录制得到的numpy数组。
  • 次要问题:sd.rec()返回的是二维数组(形状为(采样点数, 通道数)),而librosa处理音频需要一维信号。

修正后的代码

import librosa
import librosa.display
import matplotlib.pyplot as plt
import sounddevice as sd
import numpy as np

print('start speaking')

Fs = 16000
d = 3

# 录制3秒单通道音频,采样率16000
a = sd.rec(int(d*Fs), samplerate=Fs, channels=1, blocking=True)

# 将二维录制数据转为一维,并转换为librosa兼容的浮点格式
signal = a.flatten().astype(np.float32)
sr = Fs

# 提取13维MFCC特征
mfccs = librosa.feature.mfcc(y=signal, n_mfcc=13, sr=sr)

# 可视化MFCC特征
plt.figure(figsize=(25, 10))
librosa.display.specshow(mfccs,
                         x_axis="time",
                         sr=sr,
                         hop_length=512)  # 指定帧移,保证时间轴刻度准确
plt.colorbar(format="%+2.f")
plt.title('MFCC特征热力图')
plt.show()

关键修改说明

  1. 移除了Python中不必要的语句结尾分号。
  2. 对录制得到的二维数组做扁平化处理,同时转换数据格式以适配librosa的要求。
  3. 直接复用录制时的采样率,无需通过librosa.load读取。
  4. 给specshow添加hop_length参数,确保时间轴的显示与MFCC计算逻辑匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:45:41