im la recherche d'un lib sonore pour python qui me peut tall par image le volume d'un fichier sonson python lib
ou un logiciel qui peut faire un noise gate, un logiciel en ligne de commande preferd
Thanx! !
im la recherche d'un lib sonore pour python qui me peut tall par image le volume d'un fichier sonson python lib
ou un logiciel qui peut faire un noise gate, un logiciel en ligne de commande preferd
Thanx! !
La bibliothèque snack peut le faire. En particulier, cette bibliothèque prend en charge les fichiers WAV, AU, AIFF, MP3, CSL, SD, SMP et NIST/Sphere. Il peut jouer le son, faire l'analyse du spectre de puissance et le filtrage.
Python a intégré 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()
première tentative de passe .. doit être optimisé pour les fichiers de taille importante. Chapeau à this blog post
La bibliothèque pyo est pleine d'outils de synthèse et de manipulation du son très utiles.
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()
Tout d'abord, corrigez-moi si je me trompe, mais si vous avez besoin de volume par image signifie la résolution de chaque trame ira en microsecondes. Par exemple, un fichier audio typique a une fréquence d'images de 44.100, ce qui signifie 44.100 images par seconde (ou 1000 ms), ce qui place chaque traitement d'image en environ 22,67 microsecondes. Ce qui est très bien pour n'importe quelle application. En outre, Audio est une onde de compression qui nécessite un ensemble d'échantillons à analyser pour obtenir son attribut tel que fréquence, puissance, etc.
Quoi qu'il en soit, si vous voulez une résolution de morceau de 1ms, le module pydub peut être utilisé à cette fin.
Je ne sais pas si c'est nécessaire.
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
Au-dessus donnera en volume DSBF, si vous voulez en volume ici différents paramètres sont quelques exemples.
1) Pour obtenir le volume sonore dans RMS
remplacer loudness = audioChunks.dBFS
avec loudness = audioChunks.rms
2) Pour obtenir un niveau sonore maximal dans l'échantillon [ie plus grande amplitude dans un jeu d'exemples]
remplacer loudness = audioChunks.dBFS
avec loudness = audioChunks.max
c'est un très bon outil mais ce n'est pas fait pour moi ... pouvez-vous recommander l'outil anntuer? –
Je ne sais pas. Vous devez être plus précis sur ce dont vous avez besoin si vous voulez de l'aide. – Eolmar