降低音频采样频率的程序示例:

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模块来读取和写入音频文件。降低采样频率的程序简单地跳过一些原始音频帧,以达到降低采样频率的效果。提高采样频率的程序使用了线性插值法,在原始音频样本之间进行插值,以增加采样频率。请注意,提高采样频率可能会导致音频的质量下降。

Python音频采样频率调整:降低和提高音频采样率的程序示例

原文地址: https://www.cveoy.top/t/topic/pQQj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录