파이썬 TTS (4차) EdgeTTS 자연스러운 고품질 WAV 음성 만들기

소개

지난 6개월간 파이썬 입코딩을 통해 동영상 어학교재를 만들기 위해 자연스러운 영어 및 한국어 음성을 찾고 싶었다. 가장 알려진 무료 TTS인 구글의 gTTS를 사용했지만 AI로 만든 음성이기에 영어는 좋은 편이나 한가지 목소리만 있어서 단조로운 측면이 있었고, 한국어 음성은 자연스럽지 못한 음성이 문제였다. 그래서 사용하기 쉽고 자연스러운 음성을 찾고 싶었다.

진행 방법

Cursor와 퍼플렉시티를 통해 어떤 TTS가 있는지를 검색 했고, 여러 가지 파이썬 TTS 라이브러리를 검색하고 지난 3일간 테스트해 본 결과 마이크로소프트(MS) EdgeTTS 라이브러리가 아주 자연스럽고 다양한 음성을 제공하며 쉽게 사용할 수 있다.

edgts UI의 스크린샷

Tip: 사용한 프롬프트 전문을 꼭 포함하고, 내용을 짧게 소개해 주세요.

한국어 텍스트가 있는 검은 화면

  1. 커서에게 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 파일 직접 제작이 가능한 걸 알게됨

  • 한국어 스크립트의 스크린샷

앞으로의 계획이 있다면 들려주세요.

한국어 버전의 Windows 10 스크린샷

향후 계획

  • 손실압축 방식인 기존 MP3 음성 대신 몸에 좋은 WAV 음성으로 단어장 제작

  • 기존 유료 네이버 클라우드로 만든 WAV 영어 회화 교재를 이걸로 대체

  • 네이버 클라우드는 비용도 좀 들지만

  • 어제까지 사용하던 mp3 파일 대신 wav파일로 변환 성공

한국어 텍스트가 있는 검은 화면

도움 받은 글 (옵션)

https://han.gl/JszkV

👉 이 게시글도 읽어보세요