소개
지난 6개월간 파이썬 입코딩을 통해 동영상 어학교재를 만들기 위해 자연스러운 영어 및 한국어 음성을 찾고 싶었다. 가장 알려진 무료 TTS인 구글의 gTTS를 사용했지만 AI로 만든 음성이기에 영어는 좋은 편이나 한가지 목소리만 있어서 단조로운 측면이 있었고, 한국어 음성은 자연스럽지 못한 음성이 문제였다. 그래서 사용하기 쉽고 자연스러운 음성을 찾고 싶었다.
진행 방법
Cursor와 퍼플렉시티를 통해 어떤 TTS가 있는지를 검색 했고, 여러 가지 파이썬 TTS 라이브러리를 검색하고 지난 3일간 테스트해 본 결과 마이크로소프트(MS) EdgeTTS 라이브러리가 아주 자연스럽고 다양한 음성을 제공하며 쉽게 사용할 수 있다.
Tip: 사용한 프롬프트 전문을 꼭 포함하고, 내용을 짧게 소개해 주세요.
커서에게 edgeTTS 기본 코드를 요청
첫번째 에러가 발생했으며,
에러 내용을 다시 커서에게 제공하고 수정, 테스트용 wav 파일 제작 성공
테스트 음성 파일
파이썬 코드
import asyncio
import edge_tts
from edge_tts import list_voices
import wave
import os
async def main():
try:
# 사용 가능한 음성 목록 출력
voices = await list_voices()
korean_voices = [voice for voice in voices if voice["Locale"].startswith("ko")]
print("\n사용 가능한 한국어 음성:")
for voice in korean_voices:
print(f"- {voice['ShortName']}: {voice['FriendlyName']}")
# TTS 설정
communicate = edge_tts.Communicate(
text="안녕하세요, 이것은 음성 테스트입니다. 잘 들리시나요?",
voice="ko-KR-SunHiNeural",
rate="+0%"
)
# 직접 파일로 저장
output_file = "output.wav"
if os.path.exists(output_file):
os.remove(output_file)
print("\n음성을 생성하는 중...")
await communicate.save(output_file)
# 파일 크기 확인
if os.path.exists(output_file):
file_size = os.path.getsize(output_file)
print(f"\n생성된 파일 크기: {file_size} bytes")
if file_size == 0:
raise Exception("생성된 파일이 비어있습니다.")
# 파일 재생
print("\n재생을 시작합니다...")
os.system(f"afplay {output_file}")
print("재생이 완료되었습니다.")
else:
raise Exception("파일이 생성되지 않았습니다.")
except Exception as e:
print(f"\n에러가 발생했습니다: {str(e)}")
if __name__ == "__main__":
asyncio.run(main())
Tip: 코드 전문은 코드블록에 감싸서 작성해주세요. ( / 을 눌러 '코드 블록'을 선택)
결과와 배운 점
배운 점과 나만의 꿀팁을 알려주세요.
과정 중에 어떤 시행착오를 겪었나요?
처음에는 EdgeTTS가 mp3 파일만 가능한줄 알았는데,
오늘 새로 알아보면서 wav 파일 직접 제작이 가능한 걸 알게됨
앞으로의 계획이 있다면 들려주세요.
향후 계획
손실압축 방식인 기존 MP3 음성 대신 몸에 좋은 WAV 음성으로 단어장 제작
기존 유료 네이버 클라우드로 만든 WAV 영어 회화 교재를 이걸로 대체
네이버 클라우드는 비용도 좀 들지만
한국어 음성은 자연스러운데,
영어 음성이 선택도 많지 않고 음성도 별루라서
어제까지 사용하던 mp3 파일 대신 wav파일로 변환 성공