在这里,我正在练习分析音频(wav 格式),以消除给定范围内的低音量并导出到新音频。它被格式化为 int16 数组,最大值给出 +(某个数字),最小值给出 -(某个数字)。现在结果是输出音频太小了,我认为问题出在错误的范围内。那么如何选择合适的范围呢?我在 min/2 和 max/2 之间给出了它。
from pydub import AudioSegment
import io
import scipy.io.wavfile
import IPython
import numpy as np
w = AudioSegment.from_file("input.wav", format="wav")
a = w.get_array_of_samples()
fp_arr = np.array(a).T.astype(np.int16)
avg = (max(fp_arr)/2).astype(np.int16)
avg2= (min(fp_arr)/2).astype(np.int16)
b=[]
for d in a:
if d not in range(avg2,avg) :#d<avg2 and d>avg:
b.append(d)
myarray = np.asarray(b)
wav_io = io.BytesIO()
scipy.io.wavfile.write(wav_io, 16000, myarray)
wav_io.seek(0)
sound = AudioSegment.from_wav(wav_io)
file_handle = sound.export("output.wav", format="wav")