分离音频频率

文章介绍了使用Python库如numpy、wave、scipy.fft和librosa进行音频文件处理的方法,包括读取音频、执行快速傅里叶变换以分析频率和振幅,以及计算不同类型的响度,如RMS值、特定频率的响度和LoudnessUnitsFullScale(LUFS)。
摘要由CSDN通过智能技术生成
import numpy as np
import wave
import struct
from scipy.fft import rfft, rfftfreq

# 打开WAV音频文件
with wave.open('your_audio_file.wav', 'r') as wav_file:
    # 读取文件的参数
    nchannels, sampwidth, framerate, nframes, comptype, compname = wav_file.getparams()
    
    # 读取音频帧,假设音频文件为单通道(单声道)
    frames = wav_file.readframes(nframes * nchannels)
    
    # 将音频帧转换为浮点数,这里我们假定样本宽度为2(16位PCM)
    # 如果样本宽度不同,则需要相应地调整struct.unpack的格式字符
    samples = struct.unpack_from('%dh' % nframes * nchannels, frames)
    
    if nchannels == 2:  # 如果是立体声,则仅取一个通道
        samples = samples[::2]

    # 对音频信号执行快速傅里叶变换
    fft_result = rfft(samples)    
    fft_magnitude = np.abs(fft_result)  # 求得振幅(模)

    # 计算每个频点的频率
    freqs = rfftfreq(nframes, 1/framerate)

    # 输出频率和对应的振幅
    for i, amp in enumerate(fft_magnitude):
        print(f"频率: {freqs[i]:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值