NETipar Magyarország Kapcsolat

htgo-tts for Go

Szövegből beszéd Go-ban: a programod felolvashatja a szöveget, de a hangot fájlba is mentheti, vagy streamként továbbadhatja. A hangot cserélhető motor adja: az ingyenes, API-kulcs nélküli Google Translate, az OpenAI, az Azure, a Google Cloud és az ElevenLabs prémium hangjai, vagy offline a gép saját beszédprogramja.

$ go get github.com/hegedustibor/htgo-tts/v2
main.go Go
import (
    htgotts "github.com/hegedustibor/htgo-tts/v2"
    "github.com/hegedustibor/htgo-tts/v2/engine/google"
    "github.com/hegedustibor/htgo-tts/v2/voices"
)

tts, err := htgotts.New(
    google.New(voices.Hungarian),
    htgotts.WithFolder("audio"), // a sentence is downloaded only once
)
if err != nil {
    log.Fatal(err)
}

ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()

err = tts.Speak(ctx, "Szia, világ!")
Legújabb verzió
v2.1.0
2026. október 20.
Követelmények
Go 1.25+
cgo nélkül fordul
Licenc
MIT
üzleti célra is szabadon
Csillagok
219
GitHub, összesen

Mire jó?

Hang a Go-programodnak, a motort te választod

Indulj ingyen, és válts prémium vagy offline hangra, amikor kell. A programod többi része ugyanaz marad.

  • Ingyenes indulás, 60 nyelven

    A Google Translate-motorhoz nem kell API-kulcs, és 60 nyelven beszél, köztük magyarul. Kérésre lassabban, tagoltabban is felolvas.

    Így működik: google.New(voices.Hungarian)

  • Prémium hang egy sor cseréjével

    Az OpenAI, az Azure Speech, a Google Cloud és az ElevenLabs motorjánál hangot és tempót, motortól függően hangmagasságot vagy beszédstílust is választhatsz. A gpt-4o-mini-tts modellnek szóban is leírhatod, hogyan beszéljen.

    Így működik: openai.WithVoice(openai.VoiceNova)

  • Offline is megszólal

    A command motor a gépre telepített beszédprogramot futtatja, például a macOS say parancsát, az espeak-ng-t vagy a pipert, így hálózat és API-kulcs nélkül is beszél.

    Így működik: command.Say("Samantha")

  • Saját motor három metódussal

    Motor lehet bármely típus, amely megvalósítja a Synthesize, a Format és a Fingerprint metódust, így saját beszédszerver is beköthető, ugyanazzal a gyorsítótárral és lejátszással.

    Így működik: engine.Engine

  • Lejátszás külső program nélkül is

    Az alapértelmezett mplayer és az ffplay mellett a beépített lejátszó a programon belül szólaltatja meg az MP3-at. Ha a hangot csak menti vagy továbbadja a programod, lejátszó sem kell hozzá.

    Így működik: native.New()

  • Gyorsítótár, ami nem romlik el

    A gyorsítótár-mappában a hang a motor beállításai és a szöveg alapján kap fájlnevet, így ugyanaz a mondat más hangon külön fájlba kerül. Félbeszakadt letöltés vagy hibaoldal sosem marad hangfájlként.

    Így működik: htgotts.WithFolder("audio")

Hat motor, egy felület:

  • Google Translate engine/google Ingyenes, nem hivatalos végponton
  • OpenAI engine/openai Kompatibilis szerverrel és Azure OpenAI-jal is
  • Azure Speech engine/azure Neurális hangok, beszédstílusok
  • Google Cloud engine/googlecloud WaveNet-, Neural2- és Studio-hangok
  • ElevenLabs engine/elevenlabs Saját, klónozott és tervezett hangok
  • Saját gép engine/command say, espeak-ng, piper vagy bármely program

Így működik

A szöveg útja a hangszóróig

  1. 1

    Hívás

    Felolvasás, mentés, memória vagy stream: egyetlen hívás, időkorláttal vagy megszakítással.

    tts.Speak(ctx, text)
  2. 2

    Gyorsítótár

    Gyorsítótár-mappával a már elhangzott szöveg hangja fájlból jön, a motor meg sem szólal.

    hu_<md5>.mp3
  3. 3

    Szintézis

    A motor a szolgáltatás korlátja szerint, mondat- és tagmondathatáron darabolja a szöveget, és darabonként kéri le a hangot.

    Synthesize(ctx, text)
  4. 4

    Stream

    A darabok hangja egymás után folyik tovább, így a lejátszás már az első darabnál elindul.

    io.ReadCloser
  5. 5

    Hang

    Megszólal a lejátszón, vagy fájlként, memóriában, HTTP-válaszban megy tovább.

    player.Player

A hibák típusosak: az errors.Is és az errors.As szétválasztja az üres szöveget, a hiányzó lejátszót, a beszédszolgáltatás váratlan válaszát (*engine.HTTPError) és a lejárt időkorlátot.

Kódpéldák

Néhány sor, és megszólal

Az összes példaprogram (új lapon nyílik)
cmd/announce/main.go Go
e := openai.New(
    openai.WithModel(openai.ModelGPT4oMiniTTS),
    openai.WithVoice(openai.VoiceNova),
    openai.WithInstructions("Speak in a calm, friendly tone."),
) // the API key comes from OPENAI_API_KEY

tts, err := htgotts.New(e)
if err != nil {
    log.Fatal(err)
}

err = tts.Speak(ctx, "Your order has been shipped.")

Minőség

Tesztelve, verziózva, dokumentálva

Kompatibilitás

Minden változtatás után mind a két párosításon lefut a tesztcsomag (GitHub Actions).

A tesztelt Go-verziók és operációs rendszerek
Go Linux macOS
1.25

Amire számíthatsz

  • 193 automatizált teszt (go test)
  • A tesztek hálózat, hangkártya és API-kulcs nélkül, race detectorral futnak
  • gofmt, go vet és staticcheck minden változásnál
  • Futtatható példaprogram minden motorhoz
  • MIT-licenc: üzleti projektben is szabadon használható
  1. v2.1.0

    Négy új motor: Azure Speech, Google Cloud Text-to-Speech, ElevenLabs és a gépen futó beszédprogram (say, espeak-ng, piper) offline használatra; a 2.0.0 API-ja nem változott.

  2. v2.0.0

    Újraírás új importútvonalon és Go 1.25-tel: cserélhető motor (Google Translate, OpenAI), időkorlát és megszakítás minden hívásban, kimenet memóriába, streambe vagy fájlba, opcionális gyorsítótár és cgo nélküli natív lejátszó.

  3. v1.6

    A memóriába kért hang hosszabb szövegnél darabolva készül; a v1 API utolsó kiadása.

  4. v1.5

    Letöltés proxyn keresztül.

  5. v1.4

    Natív MP3-lejátszó, külső program nélkül.

Hegedűs Tibor 2017 decemberében indította a csomagot, az első címkézett kiadás 2020. június 6-án jelent meg, eddig összesen 9 kiadás készült. A v1 a v1.6.0 címkéről továbbra is telepíthető, a váltást leírja a MIGRATION.md (új lapon nyílik)

Élesben

A Go-közösségben, 2017 óta

A pkg.go.dev több tucat nyilvános Go-csomagot ismer, amely a htgo-tts-t importálja. A v2 a felhasználók visszajelzéseiből készült: a CHANGELOG 15 GitHub-issue-ra hivatkozik, a hosszú szövegtől a hangválasztáson át a Dockerben való fordításig.

Az importálók a pkg.go.dev-en (új lapon nyílik)

</Hang>

Felolvasó vagy hangos értesítő kellene a rendszeretekbe?

Beépítjük: felolvasás, hangos értesítések vagy akadálymentes hangkimenet, a feladathoz illő hangszolgáltatással, a ti rendszeretekbe.

Beszéljünk a projektedről 

Nem szükséges kész specifikáció. Elég, ha leírod, mit szeretnétek megoldani.

Kapcsolatfelvétel

Van egy jó ötleted?

Írd meg pár sorban, és jelentkezünk. Egy személyes vagy online találkozón közösen megnézzük, hogyan lesz belőle működő megoldás.

Visszajelzések

Ügyfeleink mondták rólunk

Büszkék vagyunk arra, hogy ügyfeleink hosszú távon is elégedettek a közös munkával. Íme néhány visszajelzés, ami igazán számít.

5,0 átlag az 5-ből, 8 Google-értékelés
  • Megbízható partner Valódi eredmények, hosszú távú együttműködések
  • Szakértő csapat Komplex projektek, átlátható folyamatok
  • Ügyfélközpontú szemlélet Mindig a közös célokra fókuszálunk
Kapcsolat

Az alábbi vélemények ügyfeleinktől származó, valós visszajelzések. Ez csak egy kis ízelítő, a teljes listát Google-értékeléseinknél találod.

László Szilágyi

Google-értékelés

5 csillag az 5-ből

Rugalmas és nagyon profi csapat. Személyre szabott megoldásokkal az egyedi igényeket is kiválóan teljesítik.

Norbert Szabo

Google-értékelés

5 csillag az 5-ből

Kiemelkedően magas minőség proaktivitással. Néha szinte már-már gondolatolvasással. Egy nagyon alap szintű specifikációt követeően kérdések garmadával - olyanokkal, amelyek nekünk eszünkbe se jutottak volna - elvezettek bennünket a jól átlátható rendszer felé. Majd olyan magas szintű fejlesztést és eredményt kaptunk mind fron-end mind back-end szinten, amire mi sem számítottunk. Innen kezdve csak velük dolgozunk. :) Köszönjük!

Zoltán Tolnay

Google-értékelés

5 csillag az 5-ből

Profi, lelkiismeretes, agilis csapat - komplex weboldalfejlesztés és beléptetőrendszer miatt kerestem meg őket. Jó munkát végeztek, mindenkinek ajálom őket!

csaboch

Google-értékelés

5 csillag az 5-ből

Egyedi bútortervezéssel foglalkozom és ehhez készítettek komplett arculatot és weboldalt. Minőségi eredményt kaptam.

Attila Szabó

Google-értékelés

5 csillag az 5-ből

Egyedi CRM rendszert készítettek számomra, amivel nagyon elégedett vagyok.

tom karászi

Google-értékelés

5 csillag az 5-ből

Rendkívül rugalmasak és szakmailag is elégedett voltam velük. Csak ajánlani tudom a csapatot!

Gábor Markovics

Google-értékelés

5 csillag az 5-ből

Minőségi tervezés, profi kivitelezés!!

Válaszd ki, mely sütiket engedélyezed. A szükséges sütik nem kapcsolhatók ki.