我正在寻找一个用于python的声音库,它可以让每个帧高出一个声音文件的音量
或可以执行隔音门的软件,更喜欢命令行软件
感谢名单!!
答案 0 :(得分:3)
snack库可以做到。特别是,该库支持WAV,AU,AIFF,MP3,CSL,SD,SMP和NIST / Sphere文件。它可以播放声音,进行功率谱分析和滤波。
答案 1 :(得分:3)
Python有一个内置的wave module
import wave
import struct
import numpy
# read in the data string
fin = wave.open("input.wav", "rb")
data_string = fin.readframes(fin.getnframes())
wav_params = fin.getparams()
fin.close()
# convert to volume
unpacked = struct.unpack("%dB"%(len(data_string)), data_string)
unpacked = [x**2 for x in unpacked]
# here's the volume
volume = [20 * numpy.log10(numpy.sqrt(i)) for i in unpacked]
noise_level = 40 # 'noise' level
# filter out values below limit
outstring = ""
for i in range(len(data_string)):
if volume[i] > noise_level:
outstring += data_string[i]
else:
outstring += "\0"
# write result to new file
fout = wave.open("output.wav", "wb")
fout.setparams(wav_params)
fout.writeframes(outstring)
fout.close()
首次尝试..需要针对任何显着大小的文件进行优化。帽尖到this blog post
答案 2 :(得分:0)
pyo库中充满了非常有用的声音处理和合成工具。
from pyo import *
s = Server().boot()
s.start()
sf = SfPlayer('input.aif', speed=[1,.5], loop=True)
gt = Gate(sf, thresh=-24, risetime=0.005, falltime=0.01, lookahead=5, mul=.4).out()
答案 3 :(得分:0)
首先,如果我错了,请纠正我,但如果你需要每帧的音量意味着每帧的分辨率将以微秒为单位。
例如,典型的音频文件具有44,100帧速率,这意味着每秒4400帧(或1000毫秒),这使得每帧处理大约22.67微秒。这对任何应用程序都非常好。另外,Audio是一种压缩波,需要分析一组样本才能获得频率,功率等属性。
无论如何,如果你想要1ms的块分辨率,pydub模块可用于此目的。
不确定这是否是必要的。
from pydub import AudioSegment
from pydub import utils
chunksize = 1 #ms
fname = "C:\\PATH_TO_THE_FILE\\myAudio.wav"
mysong = AudioSegment.from_wav(fname)
myAudioChunks = utils.make_chunks(mysong,chunksize)
#print "myAudioChunks =", myAudioChunks
for audioChunks in myAudioChunks:
loudness = audioChunks.dBFS
print " loudness in dBFS =", loudness
上面将给出DBFS的响度,如果你想在不同的参数中响度,这里有几个例子。
1)在RMS中获得响度
将loudness = audioChunks.dBFS
替换为loudness = audioChunks.rms
2)获得样本中的最大响度[即任何样本集中的最高振幅]
将loudness = audioChunks.dBFS
替换为loudness = audioChunks.max