인공지능의 급속한 발전으로 음성 기술은 사람들의 일상생활에서 없어서는 안 될 부분이 되었습니다. 많은 시나리오에서 교육 분야의 음성 읽기, 지능형 고객 서비스의 자동 음성 응답, 자동차 내비게이션의 음성 안내 등과 같이 텍스트를 음성으로 신속하게 변환해야 할 수 있습니다. 현재 언어 golang은 우리에게 보다 효율적이고 간결한 텍스트 음성 변환 솔루션을 제공할 수 있습니다. 이 기사에서는 독자들에게 golang을 사용하여 텍스트 음성 변환을 완성하는 방법을 소개합니다.
golang에서는 타사 라이브러리를 통해 텍스트 음성 변환 기능을 구현할 수 있습니다. 현재 시장에는 go-tts와 go-astits라는 두 가지 인기 있는 라이브러리가 있습니다. 여기서는 좀 더 성숙하고 안정적인 고아스티트를 선택합니다.
다음 명령을 사용하여 golang 설치 디렉터리의 src 경로에 있는 세 번째 라이브러리에 go-astits 패키지를 설치합니다.
go get github.com/mkb218/gosynth/v2
go-astits는 현재 음성 엔진에 따라 달라집니다. espeak와festival의 두 가지 음성 엔진을 지원합니다. 여기서는 espeak를 사용하기로 선택했습니다.
espeak 설치 방법:
sudo apt-get install espeak
설치가 완료된 후 다음 코드를 golang 편집기에 복사하여 .go 파일로 저장할 수 있습니다.
package main import ( "fmt" "os/exec" "time" "github.com/mkb218/gosynth/v2/synth" ) func main() { // 调用espeak命令将文本转为音频文件 err := exec.Command("espeak", "-w", "test.wav", "Hello, World!").Run() if err != nil { fmt.Println("Failed to convert text to wave file:", err) return } // 播放音频文件 player := synth.NewWAVFilePlayer("test.wav") player.Play() time.Sleep(player.Duration()) }
위 코드를 실행하기 전에 다음을 확인해야 합니다. test.wav 파일 폴더가 생성되었습니다. 이 코드에서는 exec 패키지의 Command 함수를 통해 espeak 명령을 호출하여 텍스트를 오디오 파일로 변환합니다. 동시에 go-astits 라이브러리의 신디사이저 패키지에 있는 NewWAVFilePlayer 함수를 사용하여 test.wav 오디오 파일을 재생합니다.
음성 엔진을 로컬에 설치하는 것 외에도 타사 음성 API를 호출하여 텍스트 음성 변환 기능을 구현할 수도 있습니다. 일반적으로 사용되는 음성 API에는 Alibaba Cloud 및 Tencent Cloud와 같은 클라우드 서비스 제공업체에서 제공하는 API가 포함됩니다.
여기에서는 Baidu 음성 합성 API를 사용하기로 선택했습니다. 바이두 음성합성 API를 사용하려면 https://ai.baidu.com/tech/speech/tts에 접속하여 관련 애플리케이션을 등록 및 신청해야 하며, 접근할 수 있는 App ID, API Key, Secret Key를 신청해야 합니다. API.
관련 golang 타사 라이브러리 설치:
go get github.com/go-resty/resty/v2 go get github.com/leonkaihao/baidu-tts-go/baidu
Baidu 음성 합성 API와 상호 작용하는 코드 작성:
package main import ( "fmt" "github.com/go-resty/resty/v2" "github.com/leonkaihao/baidu-tts-go/baidu" ) func main() { // 获取Access Token client := resty.New() resp, err := client.R(). SetFormData(map[string]string{ "grant_type": "client_credentials", "client_id": "您的API Key", "client_secret": "您的Secret Key", }). Post("https://aip.baidubce.com/oauth/2.0/token") if err != nil { fmt.Println("Failed to get token: ", err) return } token := baidu.Token{} err = resp.UnmarshalJSON(&token) if err != nil { fmt.Println("Failed to unmarshal token response: ", err) return } // 调用语音合成API来将文本转为语音 resp, err = client.R(). SetHeader("Content-Type", "application/json"). SetQueryParam("access_token", token.AccessToken). SetBody(map[string]string{ "tex": "你好,欢迎使用百度语音合成API", "lan": "zh", "ctp": "1", "speed": "5", "per": "4", "cuid": "YOUR_CUID", "spd": "5", "vol": "15", "tts": "audio", "aue": "3", "channel": "1", "len": "-1", "pdt": "", "pvc": "1.0", "speaker": "0", "background_music_id": -1, }). Post("https://tsn.baidu.com/text2audio") if err != nil { fmt.Println("Failed to request API: ", err) return } fmt.Println(resp.StatusCode()) }
위 코드에서 API 키와 비밀 키를 Baidu 클라우드에 적용된 키로 바꿔야 합니다. 정보. Baidu 음성 합성 API를 호출하면 로컬 음성 엔진을 설치하지 않고도 음성 합성 기능을 쉽게 구현할 수 있습니다.
로컬 음성 엔진을 사용하고 타사 API를 호출하면 golang에서 텍스트 음성 변환 기능을 빠르게 구현할 수 있습니다. 이 기사에서는 go-astits를 사용하고 Baidu 음성 합성 API를 호출하는 두 가지 솔루션의 기본 단계를 간략하게 소개합니다. 음성 합성에 관심이 있는 개발자에게 이러한 솔루션은 더 많은 선택권을 제공하고 기능을 빠르게 구현하는 데 도움이 되며 개발 효율성도 향상시킵니다.
위 내용은 golang에서 텍스트를 음성으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!