使用Python编写的6个音频处理函数
发布时间:2023-06-30 20:48:54
1. 音频剪切函数:
import wave
def audio_cut(input_audio, start_time, end_time, output_audio):
"""
将音频从指定的开始时间剪切到结束时间之间的部分,并保存为新的音频文件
:param input_audio: 输入音频文件名
:param start_time: 开始剪切的时间(单位:秒)
:param end_time: 结束剪切的时间(单位:秒)
:param output_audio: 输出音频文件名
"""
with wave.open(input_audio, 'rb') as wf:
parameters = wf.getparams()
frames = wf.readframes(parameters.nframes)
start_frame = int(start_time * parameters.framerate)
end_frame = int(end_time * parameters.framerate)
cut_frames = frames[start_frame:end_frame]
with wave.open(output_audio, 'wb') as wf:
wf.setparams(parameters)
wf.writeframes(cut_frames)
2. 音频合并函数:
import wave
def audio_merge(input_audio_list, output_audio):
"""
将多个音频文件合并为一个音频文件
:param input_audio_list: 输入音频文件列表
:param output_audio: 输出音频文件名
"""
output_frames = bytearray()
for audio_file in input_audio_list:
with wave.open(audio_file, 'rb') as wf:
output_frames += wf.readframes(wf.getnframes())
with wave.open(output_audio, 'wb') as wf:
parameters = wf.getparams()
wf.setparams(parameters)
wf.writeframes(output_frames)
3. 音频转换函数(比特率、采样率等):
import wave
def audio_convert(input_audio, output_audio, new_parameters):
"""
将音频文件转换为指定的参数配置,并保存为新的音频文件
:param input_audio: 输入音频文件名
:param output_audio: 输出音频文件名
:param new_parameters: 新的参数配置
"""
with wave.open(input_audio, 'rb') as wf:
frames = wf.readframes(wf.getnframes())
with wave.open(output_audio, 'wb') as wf:
wf.setparams(new_parameters)
wf.writeframes(frames)
4. 音频降噪函数:
import noisereduce as nr
import soundfile as sf
def audio_noise_reduce(input_audio, output_audio, noise_profile, sr):
"""
使用给定的噪声剖面去除音频中的噪声,保存为新的音频文件
:param input_audio: 输入音频文件名
:param output_audio: 输出音频文件名
:param noise_profile: 噪声剖面文件名
:param sr: 采样率
"""
audio, _ = sf.read(input_audio)
noise, _ = sf.read(noise_profile)
reduced_audio = nr.reduce_noise(y=audio, sr=sr, noise_profile=noise)
sf.write(output_audio, reduced_audio, sr)
5. 音频增益函数:
import numpy as np
def audio_gain(input_audio, output_audio, gain):
"""
调整音频的增益,并保存为新的音频文件
:param input_audio: 输入音频文件名
:param output_audio: 输出音频文件名
:param gain: 增益(单位:dB)
"""
audio, sr = sf.read(input_audio)
adjusted_audio = audio * (10 ** (gain / 20))
sf.write(output_audio, adjusted_audio, sr)
6. 音频频域分析函数:
import numpy as np
import matplotlib.pyplot as plt
def audio_spectrum(input_audio, plot=True):
"""
计算音频的频域分析,并可选择是否进行可视化绘制
:param input_audio: 输入音频文件名
:param plot: 是否进行可视化绘制
:return: 频域分析结果
"""
audio, sr = sf.read(input_audio)
audio_fft = np.fft.fft(audio)
audio_magnitude = np.abs(audio_fft)
audio_freq = np.fft.fftfreq(len(audio), d=1/sr)
if plot:
plt.plot(audio_freq, audio_magnitude)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('Audio Spectrum Analysis')
plt.show()
return audio_freq, audio_magnitude
以上是使用Python编写的6个音频处理函数,可以进行音频剪切、音频合并、音频转换、音频降噪、音频增益以及音频频域分析等操作。
