So zeichnen Sie Audio in Python auf: Sprache und Stille automatisch erkennen

WBOY
Freigeben: 2024-08-29 20:30:10
Original
392 Leute haben es durchsucht

How to Record Audio in Python: Automatically Detect Speech and Silence

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.

Voraussetzungen

Bevor Sie eintauchen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Python 3.xauf Ihrem System installiert.
  • Grundkenntnisse in Python.
  • Vertrautheit mit Python-Bibliotheken wie Pyaudio, Numpy und Webrtcvad.

Schritt 1: Erforderliche Bibliotheken installieren?

Wir werden die folgenden Bibliotheken verwenden:

  • pyaudio: Zum Aufnehmen von Audio von Ihrem Mikrofon.
  • webrtcvad: Zur Sprachaktivitätserkennung.
  • numpy: Zur Verarbeitung von Audiodaten.

Sie können sie mit pip:
installieren

pip install pyaudio webrtcvad numpy
Nach dem Login kopieren

Schritt 2: Audiostream einrichten?

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)
Nach dem Login kopieren

Schritt 3: Sprachaktivitätserkennung (VAD) implementieren?

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)
Nach dem Login kopieren

Schritt 4: Audio-Frames erfassen und verarbeiten?

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
Nach dem Login kopieren

Schritt 5: Speichern des aufgenommenen Audios?

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")
Nach dem Login kopieren

Abschluss ?

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage