라즈베리파이4

[라즈베리파이4] STT (파이썬만으로도 가능)

왕초보코딩러 2024. 1. 6. 16:02
728x90

라즈베리파이 환경이 아니어도 파이썬만 된다면 가능합니다

저는 비쥬얼스튜디오에서 예를 보여드렸지만 라즈베리파이에서도 가능합니다.

라즈베리파이에서 구글의 stt api 없이 사용 가능합니다

 

 

https://seahrin.com/entry/STTSpeech-To-Text-%EA%B8%B0%EC%88%A0-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EB%B0%8F-%EC%98%88%EC%A0%9CGoogle-OpenAI-Whisper

 

STT(Speech To Text) 기술 오픈소스 및 예제(Google, OpenAI Whisper)

STT(Speech To Text) 란 무엇인가요? 사람이 말하는 음성 언어를 컴퓨터가 해석해 그 내용을 문자 데이터로 전환하는 처리하는 것입니다. 아래와 같이 음성을 입력하면 전처리로 잡음처리 및 특징추

seahrin.com

 

 

https://prlabhotelshoe.tistory.com/8

 

[Python] Speech recognition 음성 인식 - 1

파이썬 라이브러리 중 음성인식 기능을 사용할 수 있는 speech recognition IDE에서 다음의 명령어로 pip를 통해 간단히 설치가 가능합니다. pip install SpeechRecognition 설치 완료후 speech recognition은 다음과

prlabhotelshoe.tistory.com


0. SpeechRecognition 설치

pip install SpeechRecognition

 

리눅스 환경에서 오류가 난다면

sudo apt-get install flac

 


1. 이미 존재하는 오디오 파일을 텍스트로 변환하고 싶을 때

1-1 오디오 파일이 wav 파일일 때

 

파이썬에서

import speech_recognition as sr

r = sr.Recognizer()

audio_file = sr.AudioFile('경로.wav')

with audio_file as source:
    audio = r.record(source)


print(r.recognize_google(audio, language='ko-KR'))

 

 

1-2 오디오 파일이 wav 파일이 아닐 때

오디오 파일을 사용하려면 형식이 wav 파일이어야 합니다!! 

gtts에서 .wav로 저장해도 이름만 그렇게 .wav로 저장되는 것일 뿐 wav파일이 된 것이 아닙니다

 

 

오류

https://stackoverflow.com/questions/68631214/audio-file-could-not-be-read-as-pcm-wav-aiff-aiff-c-or-native-flac-check-if-f

 

Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC; check if file is corrupted or in another format

import os import speech_recognition as sr command = "ffmpeg -i videototext.mp4 videototext.mp3" os.system(command) commandwav = "ffmpeg -i videototext.mp3 videototext.wav" os....

stackoverflow.com

 

해결 방법: ffmpeg라는 음성 변환 패키지를 사용합니다

https://ubunlog.com/ko/como-convertir-audio-a-otros-formatos-desde-el-terminal-con-ffmpeg/

 

FFmpeg, 터미널에서 쉽게 오디오를 변환하는 방법

이 기사에서는 추가 소프트웨어를 설치하지 않고도 FFmpeg를 사용하여 오디오를 다른 형식으로 변환 할 수있는 몇 가지 명령을 설명합니다.

ubunlog.com

 

리눅스 환경에서 ffmpeg 설치

sudo apt install ffmpeg

 


 

파이썬에서 ffmpeg 설치

https://www.delftstack.com/ko/howto/python/ffmpeg-python/

 

Python 스크립트의 FFmpeg

이 튜토리얼은 Python 스크립트에서 FFmpeg를 사용하는 방법을 알려줍니다.

www.delftstack.com

 


 

저는 코랩을 이용했습니다

코랩의 경우 리눅스 명령어 앞에 ! 를 붙여주시면 됩니다

 

코랩에서 ffmpeg 설치

!sudo apt install ffmpeg

ffmpeg 사용 방법

ffmpeg -i <변환하고픈 음성 파일 경로> <변환될 음성 파일 이름 + 형식 경로>

 

 

예를 들어

ffmpeg -i /content/before.m4a /content/after.wav

를 하면 content 디렉토리 안에 wav 형식의 after.wav라는 새로운 음성파일이 생깁니다

 

 


 

저는 유튜브 뉴스 기사를 음성으로 변환했습니다

https://www.youtube.com/watch?v=jyO0bxq3anQ

 

날씨.mp3
0.74MB

ffmpeg -i 날씨.mp3 weather.wav

 

그러면 wav 파일이 생성됩니다

 

 

 

weather.wav 파일 속 음성을 텍스트로 변환해보겠습니다

 

일요일은 오늘도 어제와 마찬가지로 전국에 포근한 가운데 오후부터는 남부지방 등 일부 지역에 5mm 안팎의 비가 오겠습니다 낮 최고 기온은 서울이 15도 광주 18도 등 11도에서 19도로 어제에 이어 오늘도 평년보다 높겠습니다 미세먼지 농도는 충북 충남 전북은 나쁨 그밖에 권역은 보통 수준이 예상됩니다 바다의 물결은 동해 앞바다에서 최고 3.5m 서해와 남의 앞바다에서 최고 1.5m 등으로 읽겠습니다

 

정확도 99.9999%

!!!


2. 사용자로부터 음성을 받고, 그 음성을 텍스트로 변환하고 싶을 때

파이썬에서

import speech_recognition as sr

r = sr.Recognizer()
mic = sr.Microphone()
with mic as source:
    print("인식됨")
    audio = r.listen(source, timeout = 5, phrase_time_limit = 5)
    try:
        text = r.recognize_google(audio, language = "ko-KR")
    except sr.UnknownValueError:
        print("음성을 인식하지 못했습니다.")
    except sr.RequestError as e:
        print(f"에러가 발생하였습니다. 에러원인 : {e}")    
    else:
        print(text)

 

 

직접 해봤습니다

 

 

 

 

버튼을 GPIO로 연결하여 음성인식이 시작되도록 동작하도록 만들어 보아요~