AkinVox Kokoro Multispeaker

8 English voices. 8 German voices. Language adapters for the original Kokoro model.

Choose a named voice and give it text. The AV_ prefix identifies an AkinVox voice. English and German each use a language adapter over the same original Kokoro base.

I'm building this for AkinVox, my audiobook site. I wanted more voices and languages for narration while keeping Kokoro small and easy to run. English and German are the first two languages. More adapters and voices will follow here.

AkinVox is still taking shape, and I'd appreciate you giving it a go. Feedback on the voices, pronunciation and storytelling rhythm will help shape what comes next.

Listen

Training data was capped at 20 hours per training voice. Figures show selected recordings and exclude held-out audio.

English

AV_ariala 路 up to 20 h per training voice 路 12.4 seconds

The house was quiet that morning. Sunlight reached across the kitchen table, and a cup of tea waited beside an open book. She sat down, listened to the birds outside, and began to read the next chapter.

AV_brody 路 up to 20 h per training voice 路 13.0 seconds

By the time the ferry reached the harbour, the sky had turned gold. He lifted his bag, thanked the captain, and walked towards the village, wondering whether the house at the end of the lane would still remember him.

AV_david 路 20.0 h training data 路 15.4 seconds

Every evening, the lighthouse keeper climbed the narrow stairs and checked the lamp. Far below, waves moved through the dark water, while the steady beam swept across the bay and guided the last fishing boats safely towards home.

AV_elliott 路 6.2 h training data 路 13.0 seconds

At first, the garden seemed completely quiet. Then a robin landed on the fence, a door opened somewhere nearby, and the familiar sound of a bicycle bell travelled down the street. The whole neighbourhood was waking up again.

AV_ralph 路 13.6 h training data 路 13.8 seconds

The train was already waiting when he reached the platform. Through an open window, he could hear someone laughing. He found his seat, placed the small wooden box beneath it, and watched the town slowly disappear behind the trees.

AV_cori 路 20.0 h training data 路 12.4 seconds

She had promised herself a quiet afternoon, a cup of tea, and the next chapter of her favourite book. But when the telephone rang, she recognised the voice immediately, and every plan she had made began to change.

AV_phil 路 20.0 h training data 路 13.2 seconds

A compass can help you find your direction, but a good map tells you what lies ahead. Before setting off, check the distance, look for safe crossings, and make sure someone knows when you expect to return home.

AV_helen 路 20.0 h training data 路 15.6 seconds

Would the letter finally answer her questions? She turned it over once more, noticed the faded stamp, and took a careful breath. Outside, the last light touched the windows, and somewhere in the house a clock began to strike.

German

AV_thorsten 路 18.4 h training data 路 12.2 seconds

Am fr眉hen Morgen 枚ffnete er das Fenster und h枚rte die V枚gel im Garten. Auf dem Tisch lag ein alter Brief, den er gestern gefunden hatte. Heute wollte er endlich herausfinden, wer ihn geschrieben hatte.

AV_bernd 路 20.0 h training data 路 12.7 seconds

Der letzte Zug war l盲ngst verschwunden, als er den kleinen Bahnhof erreichte. 脺ber den H眉geln wurde der Himmel langsam dunkel. Er stellte seine Tasche auf die Bank und wartete auf das Licht im alten Haus.

AV_eva_k 路 15.1 h training data 路 11.9 seconds

Sie nahm das Buch aus dem Regal und setzte sich ans Fenster. Drau脽en begann es zu regnen, doch im Zimmer war es warm. Schon nach den ersten Seiten f眉hlte sie sich wie auf einer Reise.

AV_karlsson 路 19.6 h training data 路 13.3 seconds

Bist du sicher, dass wir hier richtig sind? Er sah auf die Karte und dann zum Fluss. Die Br眉cke sollte hinter uns liegen. Einen Moment lang schwiegen beide, bevor sie gemeinsam 眉ber ihren Fehler lachten.

AV_kerstin 路 1.5 h training data 路 11.8 seconds

Am Abend ging sie noch einmal durch den Garten. Die Luft roch nach frischem Regen, und hinter dem Zaun spielte jemand leise Klavier. Sie blieb stehen und h枚rte zu, bis die letzten T枚ne verklungen waren.

AV_mucky 路 15.4 h training data 路 13.3 seconds

Die kleine B盲ckerei 枚ffnete jeden Morgen zur gleichen Zeit. Heute stand jedoch ein fremdes Fahrrad vor der T眉r. Als er n盲her kam, sah er einen Zettel am Lenker und erkannte sofort die vertraute Handschrift.

AV_hokuspokus 路 20.0 h training data 路 13.9 seconds

Eine gute Geschichte beginnt manchmal mit einer ganz einfachen Frage. Warum brennt im verlassenen Haus noch Licht? Wer hat die T眉r ge枚ffnet? Und weshalb liegt auf dem Tisch ein Brief, der an dich gerichtet ist?

AV_julia 路 4.0 h training data 路 11.1 seconds

Als die F盲hre den Hafen erreichte, lag die Stadt noch im Morgennebel. Sie hob ihre Tasche auf und ging langsam an Land. Nach all den Jahren war sie zur眉ck, und pl枚tzlich f眉hlte sich alles wieder vertraut an.

Quick start

Install the inference package, choose a voice and give it text. The loader uses one original Kokoro base and the selected language adapter; no merging is needed.

from kokoro_multispeaker import KokoroMultispeaker

model = KokoroMultispeaker(device="cpu")

model.save(
    "A new story begins at the little bookshop beside the station.",
    "english.wav",
    language="en",
    speaker="AV_cori",
)

model.save(
    "Eine neue Geschichte beginnt im kleinen Buchladen am Bahnhof.",
    "german.wav",
    language="de",
    speaker="AV_julia",
)

The installation guide covers CPU, GPU, offline use and the command line. The loader downloads the adapters from an immutable model revision and verifies their checksums. You can also supply local adapter folders for offline use.

Longer narration

Longer passages are split automatically. At a chunk boundary, inference includes one neighboring word on each side for continuity, then removes that context from the returned audio. This is the same approach I use in AkinVox production.

for chunk in model.stream(long_text, language="en", speaker="AV_brody"):
    audio = chunk.audio  # Mono float32 audio at 24 kHz.

The voicepacks are ready to use with their matching language adapter.

Quality and limits

Pronunciation, pacing and voice consistency can vary with the text. Listen to a few passages before choosing a voice for a longer narration.

What's next

More languages and more voices will use this same project and adapter layout. I intend to keep working on pronunciation, rhythm and consistency. The samples show the current voices; please listen before choosing one for your narration.

Apache-2.0 for AkinVox code and adapter weights. Source and dependency notices

Downloads last month
26
Inference Providers NEW
This model isn't deployed by any Inference Provider. 馃檵 Ask for provider support

Model tree for AKinvox/kokoro-multispeaker

Adapter
(12)
this model