eSpeak라는 TTS 소프트웨어가 있다.
제자가 C 언어로 프로젝트를 하는 중, TTS를 하고 싶다고 하면서 알아본 것이다.
C#이나 python혹은 android 같은 경우엔 TTS를 비교적 쉽게 할 수 있지만 C 언어로 TTS를 하는 방법은 잘 안 나온다.
https://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 코드랑 같은 경로에 둔다.
영어는 잘 모르지만 보고 따라하니 아주 쉽게 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] - 네이버 클로바 더빙 목소리 파일 받기
다운 받은 파일을 재생하는 방법
2023.03.17 - [프로그래밍] - C wav 파일 재생(PlaySound)
'프로그래밍' 카테고리의 다른 글
API란 무엇인가?(유튜브 강의) (0) | 2023.05.13 |
---|---|
C wav 파일 재생(PlaySound) (0) | 2023.03.17 |
SSMS ERD 오류 : 인덱스가 배열 범위를 벗어났습니다. (0) | 2022.12.07 |
모든 디자인 패턴을 알아야 할까? 우린 어디까지 미리 알아야 할까? (0) | 2022.11.27 |
내 입맛대로 간단하게 정리한 디자인 패턴 - 팩토리 패턴(Factory Pattern) (0) | 2022.11.27 |