2009-06-24 6 views
3

им ищет звуковой Lib для питона, который может высокий меня за кадр объем звукового файлазвук Lib Python

или программное обеспечение, которое может сделать гейт, preferd командной строки программного обеспечения

Thanx! !

ответ

3

snack библиотека может это сделать. В частности, эта библиотека поддерживает файлы WAV, AU, AIFF, MP3, CSL, SD, SMP и NIST/Sphere. Он может воспроизводить звук, анализировать и фильтровать спектр мощности.

+0

его очень хороший инструмент, но он не подходит для меня ... вы можете порекомендовать инструмент anntuer? – 2009-06-25 07:41:17

+0

Не знаю. Вы должны быть более конкретными в том, что вам нужно, если вам нужна помощь. – Eolmar

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() 

попытка первого прохода .. должен быть оптимизирован для файлов любого значительного размера. Hat-tip to this blog post

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() 
0

Прежде всего, поправьте меня, если я ошибаюсь, но если вам нужен объем для каждого кадра означает разрешение каждого кадра будет идти в микросекундах.

Например, типичный аудиофайл имеет 44,100 кадровую частоту, что означает 44,100 кадров в секунду (или 1000 мс), что обеспечивает обработку каждого кадра примерно в 22,67 микросекундах. Это очень хорошо для любого приложения. Кроме того, Audio - это волна сжатия, для которой требуется набор анализируемых образцов, чтобы получить свой атрибут, такой как частота, мощность и т. Д.

В любом случае, если вы хотите, чтобы для этой цели был разрешен разрез блока 1 мс, модуль 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