Python音频采样频率调整:降低和提高音频采样率的程序示例
降低音频采样频率的程序示例:
import wave
def downsample_audio(input_file, output_file, target_frequency):
with wave.open(input_file, 'rb') as wav_in:
params = wav_in.getparams()
sample_width = params.sampwidth
original_frequency = params.framerate
original_frames = wav_in.readframes(wav_in.getnframes())
# 计算降低采样频率的比例
downsample_ratio = original_frequency // target_frequency
# 生成新的音频数据
new_frames = original_frames[::downsample_ratio]
with wave.open(output_file, 'wb') as wav_out:
wav_out.setparams(params)
wav_out.setframerate(target_frequency)
wav_out.writeframes(new_frames)
# 示例用法
downsample_audio('input.wav', 'output.wav', 44100)
提高音频采样频率的程序示例:
import wave
import numpy as np
def upsample_audio(input_file, output_file, target_frequency):
with wave.open(input_file, 'rb') as wav_in:
params = wav_in.getparams()
sample_width = params.sampwidth
original_frequency = params.framerate
original_frames = wav_in.readframes(wav_in.getnframes())
# 计算提高采样频率的比例
upsample_ratio = target_frequency // original_frequency
# 使用线性插值法对音频进行提高采样频率
original_samples = np.frombuffer(original_frames, dtype=np.int16)
new_samples = np.repeat(original_samples, upsample_ratio)
new_frames = new_samples.astype(np.int16).tobytes()
with wave.open(output_file, 'wb') as wav_out:
wav_out.setparams(params)
wav_out.setframerate(target_frequency)
wav_out.writeframes(new_frames)
# 示例用法
upsample_audio('input.wav', 'output.wav', 48000)
这些示例程序使用了Python的wave模块来读取和写入音频文件。降低采样频率的程序简单地跳过一些原始音频帧,以达到降低采样频率的效果。提高采样频率的程序使用了线性插值法,在原始音频样本之间进行插值,以增加采样频率。请注意,提高采样频率可能会导致音频的质量下降。
原文地址: https://www.cveoy.top/t/topic/pQQj 著作权归作者所有。请勿转载和采集!