12
votes

Détecter et enregistrer un son avec python

J'utilise ce programme pour enregistrer un son en Python:

Détecter et enregistrer son audio à Python

Je veux modifier le programme pour lancer l'enregistrement lorsque le son est détecté par la saisie de la carte son. Devrait probablement comparer le niveau de son d'entrée dans le morceau, mais comment cela?


0 commentaires

3 Réponses :


5
votes

détecter quand il n'y a pas de silence est généralement effectué en utilisant le carré moyen racine (RMS ) De certains morceaux du son et le comparant à une valeur de seuil que vous avez définie (la valeur dépendra de la sensibilité de votre micro et d'autres choses pour que vous puissiez l'ajuster). En outre, en fonction de la rapidité avec laquelle vous souhaitez que le micro détecte le son soit enregistré, vous souhaiterez peut-être réduire la taille du morceau ou calculer le RMS pour se chevaucher des morceaux de données.


0 commentaires

13
votes

Vous pouvez essayer quelque chose comme ceci:

basé sur Cette question / réponse em> p> xxx pré>

Vous voudrez probablement jouer avec votre taille de morceau et vos valeurs de seuil jusqu'à ce que vous obtenez le comportement souhaité. p>

EDIT: strong> p>

Vous pouvez utiliser l'intégré Emballage audio pour trouver le carré de la racine (RMS) d'un échantillon, qui est généralement comment vous obtiendrez le niveau. P>

import audioop
import pyaudio

chunk = 1024

p = pyaudio.PyAudio()

stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=44100,
                input=True,
                frames_per_buffer=chunk)

data = stream.read(chunk)

rms = audioop.rms(data, 2)  #width=2 for format=paInt16


0 commentaires

1
votes

Comment faire est indiqué dans le lien que vous donnez: xxx

Vous devez définir la variable de seuil et comparer avec la valeur moyenne (l'amplitude) ou tout autre paramètre associé dans les données chacune Il est lu dans la boucle.

Vous pouvez avoir deux boucles imbriquées, le premier à déclencher l'enregistrement et l'autre pour enregistrer continuellement des données sonores après cela.


0 commentaires