
Ein einfacher, schneller Text-zu-Sprach-Inferenzserver für Fischreden 1.5 und unten, geschrieben in reinem Rost.
Merkmale:
torch.compile -Cache -Ausfälle Notiz
Ja, das Kompilieren von Quelle macht keinen Spaß. Ein offizielles Docker -Bild, ein Homebrew, eine Linux -Verpackung und eine Python -Interop -Schicht befinden sich auf der Roadmap.
Wenn Sie möchten, dass Ihre Plattform unterstützt wird, können Sie bitte ein Problem ansprechen und ich werde darauf eingehen!
Klonen Sie zuerst dieses Repo in den gewünschten Ordner:
git clone https://github.com/EndlessReform/fish-speech.rs.git
cd fish-speech.rs Speichern Sie die Checkpoints der FISH -Sprache auf ./checkpoints . Ich empfehle, huggingface-cli zu verwenden:
# If it's not already on system
brew install huggingface-cli
# For Windows or Linux (assumes working Python):
# pip install -U "huggingface_hub[cli]"
# or just skip this and download the folder manually
mkdir -p checkpoints/fish-speech-1.5
# NOTE: the official weights are not compatible
huggingface-cli download jkeisling/fish-speech-1.5 --local-dir checkpoints/fish-speech-1.5Wenn Sie eine ältere Fischversion verwenden:
jkeisling/fish-speech-1.4 : Die offiziellen Gewichte sind nicht kompatibel.Jetzt von Quelle kompilieren. Für Apple Silicon GPU -Unterstützung:
cargo build --release --bin server --features metalFür Nvidia:
cargo build --release --bin server --features cudaFür zusätzliche Leistung bei Nvidia können Sie die Aufmerksamkeit der Flash ermöglichen. Wenn Sie zum ersten Mal oder nach einem großen Update zusammenstellen, kann dies eine ganze Weile dauern: bis zu 15 Minuten und 16 GB RAM auf einer anständigen CPU. Sie wurden gewarnt!
mkdir ~ /.candle
CANDLE_FLASH_ATTN_BUILD_DIR= $HOME /.candle cargo build --release --features flash-attn --bin server Dadurch wird Ihr Binärer zu ./target/release/server zusammengestellt.
Starten Sie einfach die Binärdatei! Wenn Sie zum ersten Mal anfangen, rennen Sie:
# Default voice to get you started
./target/release/server --voice-dir voices-templateOptionen:
--port : Standardeinstellungen zu 3000--checkpoint : Verzeichnis für Checkpoint-Ordner. Standardeinstellungen zu checkpoints/fish-speech-1.5 .--voice-dir : Verzeichnis für Sprecher-Eingabeaufforderungen. (Mehr dazu unten)--fish-version : 1.5 , 1.4 oder 1.2 . Standardeinstellung auf 1,5--temp : Temperatur für Sprachmodell Rückgrat. Standard: 0.7--top_p : Top-P-Stichprobe für Sprachmodell-Rückgrat. Standard 0,8, um auszuschalten, setzen Sie es auf 1.Dieser Server unterstützt OGG Audio (Streaming) und WAV -Audioausgabe.
Sie können jeden OpenAI-kompatiblen Kunden verwenden. Hier ist ein Beispiel für Python -Anfrage:
from openai import OpenAI
client = OpenAI (
base_url = "http://localhost:3000/v1"
)
audio = client . audio . speech . create (
input = "Hello world!" ,
voice = "default" ,
response_format = "wav" ,
model = "tts-1" ,
)
temp_file = "temp.wav"
audio . stream_to_file ( temp_file ) Um eine Stimme zu klonen, benötigen Sie eine WAV -Datei und eine Transkription. Angenommen, Sie möchten den Sprecher alice hinzufügen, der "Hello World" in File fake.wav sagt.
Erstellen Sie eine Postanforderung an den Endpunkt /v1/audio/encoding Endpunkt, mit:
id und prompt als URL-kodierte AbfrageparameterBeispiel mit Curl:
curl -X POST " http://localhost:3000/v1/audio/encoding?id=alice&prompt=Hello%20world "
-F " [email protected] "
--output alice.npy Sie können überprüfen, ob Ihre Stimme hinzugefügt wurde, indem Sie auf den Debug -Endpunkt /v1/voices -Debug -Endpunkt drücken:
curl http://localhost:3000/v1/voices
# Returns ['default', 'alice'] Dadurch wird eine .npy -Datei mit Ihrem Eingabe -Audio als codierte Token zurückgegeben. Danach kann die alice Voice so lange verwendet werden, solange der Server ausgeführt wird , und beim Herunterfahren gelöscht wird.
Wenn Sie diese Stimme speichern möchten, können Sie die zurückgegebene .npy -Datei verwenden, um sie den Stimmen zum Start hinzuzufügen: Siehe unten.
Notiz
Ja, das ist scheiße. Die anhaltenden codierten Stimmen auf der Festplatte haben oberste Priorität.
Öffnen Sie die Datei voices-template/index.json . Es sollte ungefähr aussehen wie:
{
"speakers" : {
"default" : " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
}
}Das Voices -Verzeichnis enthält:
default.npy ) Nehmen Sie die .npy -Datei, die Sie von der Laufzeit -Codierung erhalten haben, und benennen Sie sie in Ihre Lautsprecher -ID um: Ex. Wenn die ID "Alice" ist, benennen Sie sie alice.npy um. Bewegen Sie dann alice.npy in Ihren Stimmenordner. Fügen Sie in index.json den Schlüssel hinzu:
{
"speakers" : {
"default" : " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
"alice" : " I–I hardly know, sir, just at present–at least I know who I WAS when I got up this morning, but I think I must have been changed several times since then. "
}
}Starten Sie den Server neu und Ihre neue Stimme sollte gut gehen.
Im Moment halten wir die Kompatibilität mit den offiziellen Fischreden -Inferenz -CLI -Skripten. (Inference Server- und Python -Bindungen kommen in Kürze!)
# saves to fake.npy by default
cargo run --release --features metal --bin encoder -- -i ./tests/resources/sky.wavFür frühere Versionen müssen Sie Version und Kontrollpunkte manuell angeben:
cargo run --release --bin encoder -- --input ./tests/resources/sky.wav --output-path fake.npy --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftFür FISH 1.5 (Standard):
# Switch to --features cuda for Nvidia GPUs
cargo run --release --features metal --bin llama_generate --
--text " That is not dead which can eternal lie, and with strange aeons even death may die. "
--prompt-text " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
--prompt-tokens fake.npyFür frühere Versionen müssen Sie Version und Checkpoint explizit angeben. Zum Beispiel für FISH 1.2:
cargo run --release --features metal --bin llama_generate -- --text " That is not dead which can eternal lie, and with strange aeons even death may die. " --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftFür zusätzliche Geschwindigkeit mit der Aufmerksamkeitsunterstützung von Flash -Aufmerksamkeit kompilieren.
Warnung
Die Abhängigkeit von Kerzenschwärme kann mehr als 10 Minuten dauern, bis die CPU kompiliert wird, und erfordern mehr als 16 GB Speicher! Sie wurden gewarnt.
Außerdem ist der Engpass im Oktober 2024 tatsächlich anderswo (in ineffizienten Speicherkopien und Kernel -Versand).
# Cache the Flash Attention build
# Leave your computer, have a cup of tea, go touch grass, etc.
mkdir ~ /.candle
CANDLE_FLASH_ATTN_BUILD_DIR= $HOME /.candle cargo build --release --features flash-attn --bin llama_generate
# Then run with flash-attn flag
cargo run --release --features flash-attn --bin llama_generate --
--text " That is not dead which can eternal lie, and with strange aeons even death may die. "
--prompt-text " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
--prompt-tokens fake.npyFür FISH 1.5 (Standard):
# Switch to --features cuda for Nvidia GPUs
cargo run --release --features metal --bin vocoder -- -i out.npy -o fake.wavFür frühere Modelle geben bitte die Version an. 1.2 Beispiel:
cargo run --release --bin vocoder -- --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftWarnung
Diese Codebasis ist unter der ursprünglichen Apache 2.0 -Lizenz lizenziert. Fühlen Sie sich frei zu verwenden, wie Sie möchten. Die Fischsprachgewichte sind jedoch CC-by-NC-Sa4.0 und nur für nicht kommerzielle Verwendung!
Bitte unterstützen Sie die ursprünglichen Autoren mit der offiziellen API für die Produktion.
Dieses Modell ist in der BY-CC-NC-SA-4.0-Lizenz zugelassen. Der Quellcode wird unter Apache 2.0 -Lizenz veröffentlicht.
Massiver Dankeschön auch gehen zu:
candle_examples -Warteser für hoch nützliche Code -Snippets in der CodebasisFISH Speech V1.5 ist ein führendes Modell zu Speech (TTS), das auf mehr als 1 Million Stunden Audiodaten in mehreren Sprachen trainiert wurde.
Unterstützte Sprachen:
Weitere Informationen finden Sie in Fish Speech GitHub. Demo bei Fish Audio erhältlich.
Wenn Sie dieses Repository als nützlich empfanden, sollten Sie diese Arbeit zitieren:
@misc{fish-speech-v1.4,
title={Fish-Speech: Leveraging Large Language Models for Advanced Multilingual Text-to-Speech Synthesis},
author={Shijia Liao and Yuxuan Wang and Tianyu Li and Yifan Cheng and Ruoyi Zhang and Rongzhi Zhou and Yijin Xing},
year={2024},
eprint={2411.01156},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2411.01156},
}
Dieses Modell ist in der BY-CC-NC-SA-4.0-Lizenz zugelassen.