Avec le développement rapide de l'intelligence artificielle, la technologie vocale est devenue un élément indispensable de la vie quotidienne des gens. Dans de nombreux scénarios, nous pouvons avoir besoin de convertir rapidement du texte en parole, comme la lecture vocale dans l'éducation, la réponse vocale automatique dans le service client intelligent, les invites vocales dans la navigation automobile, etc. À l’heure actuelle, le langage golang peut nous apporter une solution de synthèse vocale plus efficace et plus concise. Cet article présentera aux lecteurs comment utiliser Golang pour compléter la synthèse vocale.
Dans Golang, nous pouvons implémenter la fonction de synthèse vocale via des bibliothèques tierces. Il existe actuellement deux bibliothèques populaires sur le marché, à savoir les go-tts et les go-astits. Ici, nous choisissons les go-astits les plus matures et les plus stables.
Utilisez la commande suivante pour installer le package go-astits dans la troisième bibliothèque dans le chemin src de votre répertoire d'installation golang :
go get github.com/mkb218/gosynth/v2
go-astits doit dépendre du moteur vocal, actuellement il prend en charge deux moteurs vocaux : espeak et festival. Ici, nous choisissons d'utiliser espeak.
Comment installer espeak :
sudo apt-get install espeak
Une fois l'installation terminée, nous pouvons copier le code suivant dans votre éditeur golang et l'enregistrer en tant que fichier .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()) }
Avant d'exécuter le code ci-dessus, vous devez vous assurer que le Fichier test.wav Le dossier a été créé. Dans ce code, nous appelons la commande espeak via la fonction Command du package exec pour convertir le texte en fichier audio. En même temps, nous utilisons la fonction NewWAVFilePlayer dans le package synth de la bibliothèque go-astits pour lire le fichier audio test.wav.
En plus d'installer le moteur vocal localement, nous pouvons également implémenter la fonction de synthèse vocale en appelant une API vocale tierce. Les API vocales couramment utilisées incluent celles fournies par les fournisseurs de services cloud tels qu'Alibaba Cloud et Tencent Cloud.
Ici, nous choisissons d'utiliser l'API de synthèse vocale Baidu. Pour utiliser l'API de synthèse vocale Baidu, vous devez vous rendre sur https://ai.baidu.com/tech/speech/tts pour vous inscrire et postuler aux applications associées, et demander l'ID d'application, la clé API et la clé secrète auxquelles vous pouvez accéder. l'API.
Installez les bibliothèques tierces Golang pertinentes :
go get github.com/go-resty/resty/v2 go get github.com/leonkaihao/baidu-tts-go/baidu
Écrivez du code pour interagir avec l'API de synthèse vocale Baidu :
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()) }
Notez que dans le code ci-dessus, vous devez remplacer votre clé API et votre clé secrète par celles appliquées sur Baidu Cloud. information. En appelant l'API de synthèse vocale Baidu, nous pouvons facilement implémenter la fonction de synthèse vocale sans installer de moteur vocal local.
En utilisant le moteur vocal local et en appelant l'API tierce, nous pouvons rapidement implémenter la fonction de synthèse vocale dans Golang. Cet article présente brièvement les étapes de base de deux solutions utilisant go-astits et appelant l'API de synthèse vocale Baidu. Pour les développeurs intéressés par la synthèse vocale, ces solutions vous offrent plus de choix, vous aident à mettre en œuvre rapidement des fonctions et améliorent également l'efficacité de votre développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!