2010-04-19 13 views

Odpowiedz

4

Wykrywanie w przypadku braku ciszy zwykle wykonuje się przy użyciu root mean square (RMS) fragmentu dźwięku i porównując go z ustawioną wartością progową (wartość zależy od czułości mikrofonu i innych parametrów). rzeczy, więc musisz to zmienić). Ponadto w zależności od tego, jak szybko mikrofon ma wykryć dźwięk, który ma zostać nagrany, możesz zmniejszyć rozmiar porcji lub obliczyć wartość RMS dla nakładających się porcji danych.

11

można spróbować coś takiego:

podstawie this question/answer

# this is the threshold that determines whether or not sound is detected 
THRESHOLD = 0 

#open your audio stream  

# wait until the sound data breaks some level threshold 
while True: 
    data = stream.read(chunk) 
    # check level against threshold, you'll have to write getLevel() 
    if getLevel(data) > THRESHOLD: 
     break 

# record for however long you want 
# close the stream 

Prawdopodobnie będziesz chciał grać z wielkości i wartości progowych fragmentach aż do uzyskania pożądanego zachowania.

Edit:

Można użyć wbudowanego audioop pakiecie znaleźć korzeń średnią kwadratową (RMS) próbki, która jest ogólnie w jaki sposób można uzyskać poziom.

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 
1

jak to zrobić jest wskazany w linku podać:

print "* recording" 
for i in range(0, 44100/chunk * RECORD_SECONDS): 
    data = stream.read(chunk) 
    # check for silence here by comparing the level with 0 (or some threshold) for 
    # the contents of data. 
    # then write data or not to a file 

Trzeba ustawić zmienną progową i porównać ze średnią wartością (amplituda) lub innych związanych parametru w danych każdego czas jest odczytywany w pętli.

Można mieć dwie pętle zagnieżdżone, pierwszą uruchamiającą nagranie, a drugą stale zapisującą chuncky danych dźwiękowych.

Powiązane problemy