Audio nur dann aufzuzeichnen, wenn jemand spricht, ist eine leistungsstarke Funktion, die in verschiedenen Anwendungen verwendet werden kann, von sprachaktivierten Assistenten bis hin zur Einsparung von Speicherplatz durch Eliminierung von Stillezeiten. In diesem Tutorial erfahren Sie, wie Sie Python-Code schreiben, der mit der Aufnahme beginnt, wenn Sprache erkannt wird, und stoppt, wenn Stille erkannt wird.
Bevor Sie eintauchen, stellen Sie sicher, dass Sie über Folgendes verfügen:
Wir werden die folgenden Bibliotheken verwenden:
Sie können sie mit pip:
installieren
pip install pyaudio webrtcvad numpy
Zuerst richten wir den Audiostream ein, um die Audioeingabe von Ihrem Mikrofon zu erfassen.
import pyaudio # Audio configuration FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 CHUNK = 1024 # Initialize PyAudio audio = pyaudio.PyAudio() # Open stream stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
Wir verwenden die webrtcvad-Bibliothek, um zu erkennen, wenn jemand spricht. Die Bibliothek kann Audioframes als Sprache oder Nicht-Sprache klassifizieren.
import webrtcvad # Initialize VAD vad = webrtcvad.Vad() vad.set_mode(1) # 0: Aggressive filtering, 3: Less aggressive def is_speech(frame, sample_rate): return vad.is_speech(frame, sample_rate)
Lassen Sie uns nun fortlaufend Audiobilder erfassen und prüfen, ob sie Sprache enthalten.
def record_audio(): frames = [] recording = False print("Listening for speech...") while True: frame = stream.read(CHUNK) if is_speech(frame, RATE): if not recording: print("Recording started.") recording = True frames.append(frame) else: if recording: print("Silence detected, stopping recording.") break # Stop and close the stream stream.stop_stream() stream.close() audio.terminate() return frames
Zuletzt speichern wir das aufgenommene Audio in einer .wav-Datei.
import wave def save_audio(frames, filename="output.wav"): wf = wave.open(filename, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(audio.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() # Example usage frames = record_audio() save_audio(frames) print("Audio saved as output.wav")
Mit nur wenigen Codezeilen haben Sie ein Python-Programm implementiert, das Sprache erkennt und nur die gesprochenen Teile aufzeichnet und Stille ignoriert. Diese Technik ist besonders nützlich für die Erstellung effizienter sprachaktivierter Systeme.
Fühlen Sie sich frei, mit der VAD-Aggressivität und den Audioeinstellungen zu experimentieren, um sie an Ihre spezifischen Bedürfnisse anzupassen. Viel Spaß beim Codieren! ????
Das obige ist der detaillierte Inhalt vonSo zeichnen Sie Audio in Python auf: Sprache und Stille automatisch erkennen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!