python에서 tts로 음성을 녹음하기 위해선 먼저 사전 준비를 해야 한다.

위 사진에 나온 것처럼 인터넷에서 ffmpeg를 설치하고 난 이후 설치된 곳이 어디인지 미리 파악해 둬야 한다.
이제 본격적으로 tts 음성 녹음을 시작해 보자.
from gtts import gTTS
from pydub import AudioSegment
import simpleaudio as sa
먼저 gtts와 pydub, simpleaudio를 install 해준다.
# ffmpeg 경로 설정
AudioSegment.converter = "ffmpeg.exe"
다음으로 ffmpeg 경로를 converter에 넣어준다.
# 리스트 안에 있는 문장들
sentence = "안녕하세요 저는 자전 웹사이트 안내 데스크 김자전이라고 합니다. 무엇을 도와드릴까요? 1번 전공 탐색하기. 2번 졸업 요건 확인하기. 3번 교수님 정보 찾기. 4번 종료하기."
이후 내가 만들고 싶은 음성의 내용은 sentence에 저장한다.
기본 밑 작업은 이 정도로 해주고 음성 녹음을 시작해 보자.
# gTTS로 문장을 음성 파일로 변환
tts = gTTS(text=sentence, lang='ko')
filename = "temp.mp3"
tts.save(filename)
일단 gTTS를 이용해서 tts 변수에 내가 녹음하고 싶은 문장과 언어를 선택한다.
이후 음성 파일의 이름을 filename에 저장한 뒤 tts에 filename을 넣는다.
audio = AudioSegment.from_mp3(filename)
그다음으로 filename에 있는 mp3 정보를 읽어 AudioSegment 객체로 변환하는 작업을 실행해 준다.
# MP3를 WAV 데이터로 변환
wav_data = audio.raw_data
num_channels = audio.channels
bytes_per_sample = audio.sample_width
sample_rate = audio.frame_rate
이후 mp3를 WAV 데이터로 변환하는 작업을 실행한다(위에 있는 코드는 굳이 하나하나 의미를 파악해서 이해할 필요는 없는 것 같고 이런 과정이 필요하구나 정도로 알고 있으면 될 것 같다.)
# WAV 데이터를 simpleaudio로 재생
play_obj = sa.play_buffer(wav_data, num_channels=num_channels, bytes_per_sample=bytes_per_sample, sample_rate=sample_rate)
play_obj.wait_done() # 재생이 끝날 때까지 대기
마지막으로 WAV 데이터를 simpleaudio로 재생하면 된다.
from gtts import gTTS
from pydub import AudioSegment
import simpleaudio as sa
# ffmpeg 경로 설정
AudioSegment.converter = "ffmpeg.exe"
# 리스트 안에 있는 문장들
sentence = "안녕하세요 저는 자전 웹사이트 안내 데스크 김자전이라고 합니다. 무엇을 도와드릴까요? 1번 전공 탐색하기. 2번 졸업 요건 확인하기. 3번 교수님 정보 찾기. 4번 종료하기."
# gTTS로 문장을 음성 파일로 변환
tts = gTTS(text=sentence, lang='ko')
filename = "temp.mp3"
tts.save(filename)
audio = AudioSegment.from_mp3(filename)
# MP3를 WAV 데이터로 변환
wav_data = audio.raw_data
num_channels = audio.channels
bytes_per_sample = audio.sample_width
sample_rate = audio.frame_rate
# WAV 데이터를 simpleaudio로 재생
play_obj = sa.play_buffer(wav_data, num_channels=num_channels, bytes_per_sample=bytes_per_sample, sample_rate=sample_rate)
play_obj.wait_done() # 재생이 끝날 때까지 대기
이 코드는 현재 내가 프로젝트에서 사용하고 있는 코드의 일부분이다.
위 과정을 차례대로 수행하면 특정 문장을 읽어주는 tts 음성 파일을 만들 수 있을 것이다.