Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie Text in Golang in Sprache

So konvertieren Sie Text in Golang in Sprache

PHPz
PHPzOriginal
2023-04-24 14:46:411726Durchsuche

Mit der rasanten Entwicklung der künstlichen Intelligenz ist die Sprachtechnologie zu einem unverzichtbaren Bestandteil des täglichen Lebens der Menschen geworden. In vielen Szenarien müssen wir möglicherweise Text schnell in Sprache umwandeln, z. B. beim Vorlesen von Stimmen im Bildungsbereich, bei der automatischen Sprachbeantwortung im intelligenten Kundenservice, bei Sprachansagen bei der Autonavigation usw. Zu diesem Zeitpunkt kann uns die Sprache Golang eine effizientere und prägnantere Text-to-Speech-Lösung bieten. In diesem Artikel erfahren Sie, wie Sie mit Golang die Text-zu-Sprache-Umwandlung vervollständigen.

  1. Installieren Sie das Golang-Drittanbieterpaket

In Golang können wir die Text-to-Speech-Funktion über Bibliotheken von Drittanbietern implementieren. Derzeit gibt es zwei beliebte Bibliotheken auf dem Markt, nämlich go-tts und go-astits. Hier wählen wir die reiferen und stabileren Goastits.

Verwenden Sie den folgenden Befehl, um das go-astits-Paket in der dritten Bibliothek im src-Pfad in Ihrem Golang-Installationsverzeichnis zu installieren:

go get github.com/mkb218/gosynth/v2
  1. Installieren Sie die Sprach-Engine.

go-astits muss derzeit von der Sprach-Engine abhängig sein Es unterstützt zwei Sprach-Engines: Espeak und Festival. Hier entscheiden wir uns für die Verwendung von espeak.

So installieren Sie espeak:

sudo apt-get install espeak

Nachdem die Installation abgeschlossen ist, können wir den folgenden Code in Ihren Golang-Editor kopieren und als .go-Datei speichern:

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())
}

Bevor Sie den obigen Code ausführen, müssen Sie sicherstellen, dass der test.wav-Datei Der Ordner wurde erstellt. In diesem Code rufen wir den Befehl espeak über die Command-Funktion im Exec-Paket auf, um den Text in eine Audiodatei zu konvertieren. Gleichzeitig verwenden wir die Funktion NewWAVFilePlayer im Synth-Paket der go-astits-Bibliothek, um die Audiodatei test.wav abzuspielen.

  1. Drittanbieter-API aufrufen

Zusätzlich zur lokalen Installation der Sprach-Engine können wir die Text-to-Speech-Funktion auch durch Aufrufen der Drittanbieter-Sprach-API implementieren. Zu den häufig verwendeten Sprach-APIs gehören diejenigen, die von Cloud-Dienstanbietern wie Alibaba Cloud und Tencent Cloud bereitgestellt werden.

Hier entscheiden wir uns für die Verwendung der Baidu-Sprachsynthese-API. Um die Baidu-Sprachsynthese-API zu verwenden, müssen Sie sich unter https://ai.baidu.com/tech/speech/tts registrieren und entsprechende Anwendungen beantragen sowie die App-ID, den API-Schlüssel und den geheimen Schlüssel beantragen, auf die Sie zugreifen können die API.

Installieren Sie relevante Golang-Bibliotheken von Drittanbietern:

go get github.com/go-resty/resty/v2
go get github.com/leonkaihao/baidu-tts-go/baidu

Schreiben Sie Code für die Interaktion mit der Baidu-Sprachsynthese-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())
}

Beachten Sie, dass Sie im obigen Code Ihren API-Schlüssel und Geheimschlüssel durch die auf Baidu Cloud Related angewendeten ersetzen müssen Information. Durch den Aufruf der Baidu-Sprachsynthese-API können wir die Sprachsynthesefunktion problemlos implementieren, ohne eine lokale Sprach-Engine installieren zu müssen.

  1. Zusammenfassung

Durch die Verwendung der lokalen Sprach-Engine und den Aufruf der Drittanbieter-API können wir die Text-to-Speech-Funktion in Golang schnell implementieren. In diesem Artikel werden kurz die grundlegenden Schritte zweier Lösungen vorgestellt, die Go-Astits verwenden und die Baidu-Sprachsynthese-API aufrufen. Für Entwickler, die sich für Sprachsynthese interessieren, bieten diese Lösungen mehr Auswahlmöglichkeiten, helfen Ihnen bei der schnellen Implementierung von Funktionen und verbessern außerdem Ihre Entwicklungseffizienz.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Text in Golang in Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Wählen Sie Golang oder JavaNächster Artikel:Wählen Sie Golang oder Java