>백엔드 개발 >파이썬 튜토리얼 >Python에서 오디오를 녹음하는 방법: 음성 및 침묵을 자동으로 감지

Python에서 오디오를 녹음하는 방법: 음성 및 침묵을 자동으로 감지

WBOY
WBOY원래의
2024-08-29 20:30:10399검색

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

누군가 말할 때만 오디오를 녹음하는 것은 음성 인식 비서부터 묵음 시간을 없애 저장 공간을 절약하는 것까지 다양한 애플리케이션에서 사용할 수 있는 강력한 기능입니다. 이 튜토리얼에서는 음성을 감지하면 녹음을 시작하고 침묵이 감지되면 중지하는 Python 코드를 작성하는 방법을 알아봅니다.

전제 조건

들어가기 전에 다음 사항을 확인하세요.

  • Python 3.x가 시스템에 설치되어 있습니다.
  • 파이썬에 대한 기본 지식
  • pyaudio, numpy, webrtcvad 등 Python 라이브러리에 대한 지식

1단계: 필수 라이브러리를 설치하시겠습니까?

우리는 다음 라이브러리를 사용할 예정입니다:

  • pyaudio: 마이크에서 오디오를 캡처합니다.
  • webrtcvad: 음성 활동 감지용.
  • numpy: 오디오 데이터 처리용.

pip를 사용하여 설치할 수 있습니다.

pip install pyaudio webrtcvad numpy

2단계: 오디오 스트림 설정?

먼저 마이크에서 입력되는 오디오를 캡처하도록 오디오 스트림을 설정해 보겠습니다.

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)

3단계: 음성 활동 감지(VAD) 구현?

webrtcvad 라이브러리를 사용하여 누군가가 말할 때를 감지합니다. 라이브러리는 오디오 프레임을 음성 또는 비음성으로 분류할 수 있습니다.

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)

4단계: 오디오 프레임 캡처 및 처리?

이제 오디오 프레임을 연속적으로 캡처하여 음성이 포함되어 있는지 확인해 보겠습니다.

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

5단계: 녹음된 오디오 저장 ?

마지막으로 녹음된 오디오를 .wav 파일로 저장해 보겠습니다.

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")

결론 ?

단 몇 줄의 코드만으로 음성을 감지하고 침묵을 무시하고 말하는 부분만 녹음하는 Python 프로그램을 구현했습니다. 이 기술은 효율적인 음성 활성화 시스템을 만드는 데 특히 유용합니다.

귀하의 특정 요구에 맞게 VAD 공격성과 오디오 설정을 자유롭게 실험해 보세요. 즐거운 코딩하세요! ?‍??‍?


위 내용은 Python에서 오디오를 녹음하는 방법: 음성 및 침묵을 자동으로 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.