본문 바로가기

프로그래밍

espeak c sample 윈도우 한글(C 언어 TTS)

 

tts_in_c.zip
12.08MB

eSpeak라는 TTS 소프트웨어가 있다. 

제자가 C 언어로 프로젝트를 하는 중, TTS를 하고 싶다고 하면서 알아본 것이다.

C#이나 python혹은 android 같은 경우엔 TTS를 비교적 쉽게 할 수 있지만 C 언어로 TTS를 하는 방법은 잘 안 나온다.

https://espeak.sourceforge.net/

 

eSpeak: Speech Synthesizer

eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows.   http://espeak.sourceforge.net eSpeak uses a "formant synthesis" method. This allows many languages to be provided in a small size. The sp

espeak.sourceforge.net

 

여기에 가서 exe를 받으면 된다.

https://sourceforge.net/projects/espeak/files/espeak/espeak-1.48/setup_espeak-1.48.04.exe/download

 

exe파일을 다운받고 실행하면 C:\Program Files (x86)\eSpeak 폴더가 생긴다.

우리가 필요한 건 command_line 폴더 안의 espeak.exe이다.

 

일단 이걸 실행하면 까만 창이 나오고 여기에 메시지를 입력하면 말을 한다.

한글을 말해보라고 하면 이상한 소리를 한다. 일단 영어는 잘 된다.

이 파일을 내가 만든 c 코드랑 같은 경로에 둔다.

 

dll도 써보고 header 파일도 써보고 lib도 써봤는 데 잘 안 됐다.

 

 

 

 

 

영어는 잘 모르지만 보고 따라하니 아주 쉽게 C로도 음성을 출력했다.

https://www.youtube.com/watch?v=lC-i3Q-2KcY 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>


int main() {
    system("espeak Hello"); //espeak에서 Hello를 말하게 한다.

    return 0;
}

 

 

문제는 한국말이 이상하게 출력된다는 것이다.

 

인코딩 방식 문제 같은 데 이걸 어떻게 해결해야 할지 모르겠더라.

 

다른 제자에게 같이 찾아보자고 부탁했다.

 

그리고 방법을 찾았다!

 

UTF-8에 메시지를 저장 후 그 메시지를 출력하면 된다.

 

#include <stdio.h>

int main() {

    char command[1024];


    // Construct the command
    snprintf(command, sizeof(command), "espeak.exe -v ko -f temp.txt");

    // Execute the command
    int result = system(command);

    if (result != 0) {
        printf("Error running eSpeak command\n");
    }


    return result;
}

 

요약

 

1. espeak.exe 파일을 프로젝트 폴더 안에 둔다.

2. 한글 출력하고자 하는 내용을 txt 파일에 넣는다.

3. system("espeak.exe -v ko -f 파일명.txt");

 

 

만약 wav나 mp3 파일을 재생하는 식으로 음성을 재생하려면, 클로바TTS등 좋은 거 많다.

아래 내 블로그 포스팅을 참고하여 다운 받으면 된다.

2023.03.17 - [프로그래밍 외의 IT] - 네이버 클로바 더빙 목소리 파일 받기

 

네이버 클로바 더빙 목소리 파일 받기

아래 링크로 들어간 다음 마우스 휠을 한 번 스르륵 내린다. https://clova.ai/voice/# CLOVA Voice - 네이버 클로바 자연스럽고 깨끗한 합성음, CLOVA Voice를 체험해보세요. clova.ai 다운 받아서 들어보면 알겠

xenoint.tistory.com

 

다운 받은 파일을 재생하는 방법

2023.03.17 - [프로그래밍] - C wav 파일 재생(PlaySound)

 

C wav 파일 재생(PlaySound)

#include #include #include #include //_getch, _kbhit 중 하나만 쓰면 됨. 없으면 소리 안 남 #pragma comment(lib, "winmm.lib") int main() { PlaySound(TEXT("ex.wav"), NULL, SND_FILENAME | SND_ASYNC); //한 번만 재생 //PlaySound(TEXT("ex.wav")

xenoint.tistory.com