Python에서 Speech를 텍스트로 변환하는 방법

음성 인식은 단어와 단어를 식별하는 기계나 프로그램의 능력입니다.
구어의 문구를 텍스트 정보로 변환합니다.

Sci-fi와 Siri, Cortana 및 Google Assistant와 같은 개인 비서 및 음성을 통해 상호 작용하는 기타 가상 비서에서 본 적이 있을 것입니다.

이 AI 비서는 당신의 음성을 이해하기 위해 당신이 방금 말한 것을 이해하기 위해 음성 인식을 해야 합니다.

음성 인식은 복잡한 프로세스이므로 기계 학습/딥 러닝 모델을 교육하는 방법을 가르치지 않고 대신 Google 음성 인식 API를 사용하여 이를 수행하는 방법을 알려드리겠습니다.

Python의 기본 사항이 있는 한 이 자습서를 성공적으로 완료하고 Python에서 완벽하게 작동하는 음성 인식 프로그램을 빌드할 수 있습니다.

요구 사항



이 튜토리얼을 성공적으로 완료하려면 머신에 다음 Python 라이브러리가 설치되어 있어야 합니다.

-파이오디오 라이브러리
- SpeechRecognition 라이브러리

설치

pip install PyAudio
pip install SpeechRecognition


SpeechRecognition 라이브러리를 사용하면 온라인 및 오프라인에서 여러 엔진 및 API를 지원하여 음성 인식을 수행할 수 있습니다.

다음은 지원되는 엔진 중 일부입니다.
  • CMU 스핑크스(오프라인에서 작동)
  • 구글 음성인식
  • Google Cloud Speech API
  • 위트아이
  • Microsoft Bing 음성 인식
  • 하운디파이 API
  • IBM Speech to Text

  • Snowboy Hotword 감지(오프라인에서 작동)

    이 튜토리얼에서는 기본적으로 무료인 Google Speech recognition API를 사용할 것입니다. 아마도 특정 시간 동안 보낼 수 있는 요청에 제한이 있을 것입니다.

    이 자습서 전체에서 파일의 오디오 소스를 사용하여 마이크에서 직접 공급되는 사운드를 사용하여 음성 인식을 수행하는 방법을 배웁니다.

    마이크에서 음성 인식



    마이크에서 음성 인식을 수행할 때 마이크에서 오디오를 녹음한 다음 Google Speech에 텍스트 인식 엔진으로 보내야 합니다. 그러면 인식을 수행하고 변환된 텍스트를 반환합니다.

    *관련 단계 *
  • 마이크에서 오디오 녹음(PyAudio)
  • 음성 인식 엔진에 오디오 보내기
  • 인식된 텍스트를 화면에 인쇄하기

  • 아래는 바로 확인할 수 있는 샘플 app.py 코드입니다.

    *app.py *

    import speech_recognition as sr
    
    recognizer = sr.Recognizer()
    
    ''' recording the sound '''
    
    with sr.Microphone() as source:
        print("Adjusting noise ")
        recognizer.adjust_for_ambient_noise(source, duration=1)
        print("Recording for 4 seconds")
        recorded_audio = recognizer.listen(source, timeout=4)
        print("Done recording")
    
    ''' Recorgnizing the Audio '''
    try:
        print("Recognizing the text")
        text = recognizer.recognize_google(
                recorded_audio, 
                language="en-US"
            )
        print("Decoded Text : {}".format(text))
    
    except Exception as ex:
        print(ex)
    


    오디오 파일에서 음성 인식



    오디오 라인에서 음성 인식을 수행할 때 마이크를 오디오 소스로 사용하는 대신 한 줄의 코드만 변경하면 텍스트로 변환하려는 오디오 파일에 대한 경로를 제공합니다.

    데모에서는 아래 샘플 오디오를 사용했습니다.

    Sample Audio

    아래 코드는 파일에서 오디오의 음성 인식을 수행하는 샘플 스크립트입니다.

    import speech_recognition as sr
    
    recognizer = sr.Recognizer()
    
    ''' recording the sound '''
    
    with sr.AudioFile("./sample_audio/speech.wav") as source:
        recorded_audio = recognizer.listen(source)
        print("Done recording")
    
    ''' Recorgnizing the Audio '''
    try:
        print("Recognizing the text")
        text = recognizer.recognize_google(
                recorded_audio, 
                language="en-US"
            )
        print("Decoded Text : {}".format(text))
    
    except Exception as ex:
        print(ex)
    


    산출

    kalebu@kalebu-PC:~$ python3 app_audio.py 
    Done recording
    Recognizing the text
    Decoded Text: python programming is the best of all by Jordan
    


    긴 오디오 소스에서 음성 인식



    매우 긴 오디오가 있는 경우 전체 오디오를 메모리에 로드하고 API를 통해 전송하는 것은 매우 느린 프로세스가 될 수 있습니다. 이를 극복하기 위해 긴 오디오 소스를 작은 청크로 분할한 다음 해당 개별 청크에서 음성 인식을 수행해야 합니다.

    우리는 pydub을 사용하여 Long Audio Source를 작은 청크로 분할할 것입니다.

    pydub을 설치하려면 pip를 사용하십시오.

    $~ pip install pydub
    


    아래 링크를 사용하여 샘플 긴 오디오를 다운로드하려면

    Long Sample Audio

    아래는 긴 오디오를 로드하고 세그먼트로 분할한 다음 해당 개별 청크에서 음성 인식을 수행하여 오디오 분할에 대해 자세히 알아볼 수 있는 DataCamp 자습서를 확인하는 샘플 Python 코드입니다.

    import os 
    from pydub import AudioSegment
    import speech_recognition as sr
    from pydub.silence import split_on_silence
    
    recognizer = sr.Recognizer()
    
    def load_chunks(filename):
        long_audio = AudioSegment.from_mp3(filename)
        audio_chunks = split_on_silence(
            long_audio, min_silence_len=1800,
            silence_thresh=-17
        )
        return audio_chunks
    
    for audio_chunk in load_chunks('./sample_audio/long_audio.mp3'):
        audio_chunk.export("temp", format="wav")
        with sr.AudioFile("temp") as source:
            audio = recognizer.listen(source)
            try:
                text = recognizer.recognize_google(audio)
                print("Chunk : {}".format(text))
            except Exception as ex:
                print("Error occured")
                print(ex)
    
    print("++++++")
    


    산출

    $ python long_audio.py
        Chunk : by the time you finish reading this tutorial you have already covered several techniques and natural then
        Chunk : learn more
        Chunk : forgetting to subscribe to be updated on upcoming tutorials
        ++++++
    


    이제 수행 방법을 알게 된 것을 축하합니다. 지식으로 무엇을 만들지 기대됩니다.

    Original Articlekalebujordan.com에서 찾을 수 있습니다.

    의견, 제안 또는 어려움이 있는 경우 아래에 의견을 남겨 주시면 최대한 빨리 연락 드리겠습니다.

    좋은 웹페이지 즐겨찾기