책과는 다르게 라즈베리파이 마이크를 사용하지 않고 노트북 mic를 사용할 것이다.

구글 클라우드 90일 활성화 후, 새프로젝트를 open한다.














이후에 작성할 파이썬 프로그램에서 구글 음성 인식 API를 사용하기 위해서는 다음과 같이 키 파일 이름을 입력해 주어야 한다.
p315의 라이브러리 설치하자?
나는 아래와 같이 강사님이 공유해준 라이브러리를 아나콘다로 설치하였다.
설치를 pip로 했기 때문에 실행도 python으로 하면 된다.
pip install --upgrade google-auth pip install --upgrade google-api-python-client pip install google-cloud-speech pip install gTTS pip install pipwin pipwin install pyaudio
p316의 영어 음성 인식하기를 해보자
import os
from google.cloud import speech
from micstream import MicrophoneStream
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = \
"여기에 JSON형식의 내 키 값을 입력하면된다."
# Audio recording parameters
RATE = 44100
CHUNK = int(RATE /10) # 100ms
def listen_print_loop(responses):
for response in responses:
result = response.results[0]
transcript = result.alternatives[0].transcript
print(transcript)
if 'exit' in transcript or 'quit' in transcript:
print('Exiting..')
break
language_code = 'en-US' # aBCP-47 language tag
client = speech.SpeechClient()
config = speech.RecognitionConfig(
encoding = speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz = RATE,
language_code = language_code)
streaming_config = speech.StreamingRecognitionConfig(config = config)
with MicrophoneStream(RATE, CHUNK) as stream:
audio_generator = stream.generator()
requests = (speech.StreamingRecognizeRequest(audio_content = content)
for content in audio_generator)
responses = client.streaming_recognize(streaming_config, requests)
listen_print_loop(responses)
영어를 인식함을 알 수 있다.

위 음성인식 코드에서 en-US -> ko-KR로 변경하면된다.
내가 마이크에 말하면 그대로 인식해서 컴퓨터 음성으로 출력한다.
노트북에 헤드셋 연결해서 말하면 훨씬 빠르게 인식한다.
import os
from google.cloud import speech
from gtts import gTTS
from micstream import MicrophoneStream
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = \
"여기에 JSON형식의 내 키 값을 입력하면된다."
# Audio recording parameters
RATE = 44100
CHUNK = int(RATE /10) # 100ms
def do_TTS(text):
tts = gTTS(text = text, lang = 'ko')
a = os.path.exists('read.mp3')
if a:
os.remove('read.mp3') # 기존에 파일이 있다면 삭제
tts.save('read.mp3')
os.system('read.mp3') # os.system('mpg321 read.mpc')
def listen_print_loop(responses):
for response in responses:
result = response.results[0]
transcript = result.alternatives[0].transcript
print(transcript)
if '종료' in transcript or '그만' in transcript:
print('종료합니다..')
break
do_TTS(transcript) # 음성인식된 소리 넘기기
language_code = 'ko-KR' # aBCP-47 language tag
# 한글을 원하면 'ko-KR'로 설정하자 'en-US'
client = speech.SpeechClient()
config = speech.RecognitionConfig(
encoding = speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz = RATE,
language_code = language_code)
streaming_config = speech.StreamingRecognitionConfig(config = config)
with MicrophoneStream(RATE, CHUNK) as stream:
audio_generator = stream.generator()
requests = (speech.StreamingRecognizeRequest(audio_content = content)
for content in audio_generator)
responses = client.streaming_recognize(streaming_config, requests)
listen_print_loop(responses)
수업종료