Rede oder nicht Rede-Erkennung in Python

Ich Schreibe ein Programm, dass erkennt Rede. Was es tut, ist es nimmt audio vom Mikrofon auf und wandelt Sie in text mit Sphinx. Mein problem ist, ich möchte die Aufnahme zu starten, nur audio, wenn etwas gesprochen wird, durch den Benutzer.

Experimentierte ich durch das Lesen der audio-Pegel vom Mikrofon und Aufnahme nur, wenn der Pegel über einen bestimmten Wert. Aber es ist nicht so effektiv. Das Programm startet die Aufnahme, wenn er entdeckt etwas laut. Dies ist der code, den ich verwendet

import audioop
import pyaudio as pa
import wav

class speech():
    def __init__(self):
        # soundtrack properties
        self.format = pa.paInt16
        self.rate = 16000
        self.channel = 1
        self.chunk = 1024
        self.threshold = 150
        self.file = 'audio.wav'

        # intialise microphone stream
        self.audio = pa.PyAudio()
        self.stream = self.audio.open(format=self.format,
                                  channels=self.channel,
                                  rate=self.rate,
                                  input=True,
                                  frames_per_buffer=self.chunk)


    def record(self)
        while True:
            data = self.stream.read(self.chunk)
            rms = audioop.rms(data,2) #get input volume
            if rms>self.threshold: #if input volume greater than threshold
                break

        # array to store frames
        frames = []
        # record upto silence only
        while rms>threshold:
            data = self.stream.read(self.chunk)
            rms = audioop.rms(data,2)
            frames.append(data)

        print 'finished recording.... writing file....'
        write_frames = wav.open(self.file, 'wb')
        write_frames.setnchannels(self.channel)
        write_frames.setsampwidth(self.audio.get_sample_size(self.format))
        write_frames.setframerate(self.rate)
        write_frames.writeframes(''.join(frames))
        write_frames.close()

Gibt es eine Möglichkeit, die ich unterscheiden kann zwischen menschlicher Stimme und andere Geräusche in Python ? Hoffe, jemand kann mich finden eine Lösung.

  • Ich Teste deinen code in ubuntu, von wo aus wav-Paket zum download & test ?
InformationsquelleAutor freeMinder | 2013-08-02
Schreibe einen Kommentar