[파이썬][AI Chatbot] SpeechRecognition의 노이즈 처리를 위한 python예제

SpeechRecognition 라이브러리를 사용하여 음성 데이터의 노이즈를 처리하는 방법은 크게 두 가지입니다. 첫째, 녹음 시에 노이즈를 최소화하기 위해 녹음 환경을 개선하거나 녹음 설정을 조정할 수 있습니다. 둘째, 녹음된 음성을 처리하기 전에 노이즈 제거 알고리즘을 적용하여 노이즈를 감소시킬 수 있습니다. 아래는 노이즈 처리를 위한 예제 코드입니다.

SpeechRecognition 라이브러리를 설치하려면 다음 명령어를 사용합니다:

pip install SpeechRecognition` 
  1. 녹음 환경 개선 및 노이즈 처리 예제:

    이 예제에서는 녹음 환경을 개선하고 노이즈를 최소화하여 음성 데이터의 품질을 높이는 방법을 다룹니다.

    `import speech_recognition as sr
        
    recognizer = sr.Recognizer()
        
    def record_and_transcribe(clean_audio_file):
        with sr.Microphone() as source:
            # 녹음 환경 설정
            recognizer.adjust_for_ambient_noise(source)
        
            print("Say something:")
            audio = recognizer.listen(source)
        
        try:
            text = recognizer.recognize_google(audio)
            print("You said:", text)
            # 녹음된 음성을 파일로 저장
            with open(clean_audio_file, "wb") as f:
                f.write(audio.get_wav_data())
        except sr.UnknownValueError:
            print("Could not understand audio")
        except sr.RequestError as e:
            print("Error during request to Google Speech Recognition service:", e)
        
    clean_audio_file = "path/to/clean_audio.wav"
    record_and_transcribe(clean_audio_file)` 
    
  2. 노이즈 제거 예제:

    이 예제에서는 녹음된 음성에서 노이즈를 제거하여 품질을 개선하는 방법을 다룹니다. 이 예제는 noisereduce 패키지를 활용합니다. 먼저 아래와 같이 해당 패키지를 설치해야 합니다:

    `pip install noisereduce` 
    `import noisereduce as nr
    import soundfile as sf
    import numpy as np
    import speech_recognition as sr
    
    recognizer = sr.Recognizer()
    
    def denoise_and_transcribe(audio_file):
        data, rate = sf.read(audio_file)
        reduced_noise = nr.reduce_noise(y=data, sr=rate)
        sf.write("cleaned_audio.wav", reduced_noise, rate)
    
        with sr.AudioFile("cleaned_audio.wav") as source:
            audio = recognizer.record(source)
    
        try:
            text = recognizer.recognize_google(audio)
            print("Transcribed Text:", text)
        except sr.UnknownValueError:
            print("Could not understand audio")
        except sr.RequestError as e:
            print("Error during request to Google Speech Recognition service:", e)
    
    audio_file = "path/to/noisy_audio.wav"
    denoise_and_transcribe(audio_file)` 

위의 예제 코드에서는 첫 번째 예제는 녹음 환경을 개선하고 음성을 녹음한 다음, 음성 데이터를 텍스트로 변환합니다. 두 번째 예제는 녹음된 음성에서 노이즈를 제거한 다음, 노이즈가 제거된 음성을 텍스트로 변환합니다. 이러한 방법을 사용하여 녹음 및 노이즈 처리를 개선할 수 있습니다.