Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« CrispASR » : différence entre les versions

De Le Wiki de Lug
 
(43 versions intermédiaires par le même utilisateur non affichées)
Ligne 5 : Ligne 5 :
  # git clone --recurse-submodules <nowiki>https://</nowiki>github.com/CrispStrobe/CrispASR
  # git clone --recurse-submodules <nowiki>https://</nowiki>github.com/CrispStrobe/CrispASR
  # cd CrispASR
  # cd CrispASR
 
* On installe quelques dépendances avant la compilation ( activer [[Debian_APT#Dépôts_contrib_et_non-free|les dépôts contrib et non-free]] si nécessaire) :
# apt update
# apt install libopencore-amrnb-dev libopencore-amrwb-dev libopus-dev libopusfile-dev libopenblas-dev ccache libfdk-aac-dev libsentencepiece-dev sentencepiece libopenblas-dev libnccl2 libnccl-dev libmp3lame-dev
# ln -s /usr/lib/x86_64-linux-gnu/libopenblas.so /usr/local/lib/libcblas.so
# ldconfig
* On configure la compilation en choisissant le backend adapté au matériel utilisé.
* On configure la compilation en choisissant le backend adapté au matériel utilisé.


Ligne 12 : Ligne 16 :


Version NVIDIA avec CUDA — nécessite l’installation préalable du CUDA Toolkit :
Version NVIDIA avec CUDA — nécessite l’installation préalable du CUDA Toolkit :
  # cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON
# export CUDACXX=/usr/local/cuda-<font color=blue>13.3</font>/bin/nvcc
  # cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON -DGGML_LTO=ON


Version Apple Silicon avec Metal :
Version Apple Silicon avec Metal :
Ligne 27 : Ligne 32 :
==== Speech-to-Text ====
==== Speech-to-Text ====
===== [https://huggingface.co/cstr/parakeet-tdt-0.6b-v3-GGUF cstr/parakeet-tdt-0.6b-v3-GGUF] =====
===== [https://huggingface.co/cstr/parakeet-tdt-0.6b-v3-GGUF cstr/parakeet-tdt-0.6b-v3-GGUF] =====
Via le client [[Llama.cpp#Téléchargement_via_le_client_Hugging_Face_(méthode_recommandée)
Voir [[Client_Hugging_Face|Client Hugging Face]]
  # hf download
# hf download cstr/parakeet-tdt-0.6b-v3-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/stt/parakeet-tdt-0.6b-v3/q8_0
 
# vi /etc/systemd/system/crispasr-stt.service
 
[Unit]
Description=CrispASR Speech-to-Text Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
Environment="CRISPASR_API_KEYS=<font color = blue>masuperclef</font>"
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend parakeet \
    -m /opt/models/stt/parakeet-tdt-0.6b-v3/q8_0/parakeet-tdt-0.6b-v3-q8_0.gguf \
    --language <font color="blue">auto</font> \
    --host <font color = blue>0.0.0.0</font> \
    --port <font color = blue>7980</font>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
{{Méta bandeau
  | niveau = information
  | icône = loupe
  | texte  =
Parakeet est suffisamment léger pour fonctionner correctement sur CPU avec l’option <code>-ng</code>. Il est également possible de définir le nombre de threads CPU utilisés avec l’option <code>-t <font color="blue">N</font></code> ; la valeur par défaut est de 4.
}}
{{Méta bandeau
  | niveau = modéré
  | icône = important
  | texte =
La variable <code>Environment="CRISPASR_API_KEYS=<font color = blue>masuperclef</font>"</code> est facultative. Elle permet d’activer l’authentification par clé API sur le serveur CrispASR. Pour une utilisation avec Hermes, la valeur configurée ici doit être strictement identique à celle définie dans <code>VOICE_TOOLS_OPENAI_KEY</code>.
}}
 
==== Text-to-Speech ====
===== [https://huggingface.co/cstr/qwen3-tts-0.6b-base-GGUF Qwen3-TTS-12Hz-0.6B-Base] =====
Voir [[Client_Hugging_Face|Client Hugging Face]]
# hf download cstr/qwen3-tts-0.6b-base-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0
# hf download cstr/qwen3-tts-tokenizer-12hz-GGUF --include "qwen3-tts-tokenizer-12hz.gguf" --local-dir /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0
 
# vi /etc/systemd/system/crispasr-tts.service
 
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
Environment="CRISPASR_API_KEYS=<font color = blue>masuperclef</font>"
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend qwen3-tts \
    -m /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0/qwen3-tts-12hz-0.6b-base-q8_0.gguf \
    --codec-model /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0/qwen3-tts-tokenizer-12hz.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language <font color="blue">fr</font> \
    --host <font color="blue">0.0.0.0</font> \
    --port <font color="blue">7981</font>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
{{Méta bandeau
  | niveau = information
  | icône = important
  | texte  =
Ce modèle est fourni sans voix. Il est donc nécessaire de placer un fichier WAV ainsi que sa transcription au format TXT dans le dossier <code>/opt/voices</code> (par exemple : <code>henriette.wav</code> et <code>henriette.txt</code>).
}}
{{Méta bandeau
  | niveau = modéré
  | icône = important
  | texte =
La variable <code>Environment="CRISPASR_API_KEYS=<font color = blue>masuperclef</font>"</code> est facultative. Elle permet d’activer l’authentification par clé API sur le serveur CrispASR. Pour une utilisation avec Hermes, la valeur configurée ici doit être strictement identique à celle définie dans <code>VOICE_TOOLS_OPENAI_KEY</code>.
}}
 
===== [https://huggingface.co/cstr/chatterbox-GGUF Chatterbox] =====
{{Méta bandeau
  | niveau = grave
  | icône = important
  | texte  =
Informations vérifiées le 23/07/2026. La compatibilité avec CrispASR semble actuellement limitée. Le modèle est trop lourd pour une utilisation en temps réel avec un chatbot, mais offre une très bonne qualité audio.
}}
Voir [[Client_Hugging_Face|Client Hugging Face]]
  # hf download cstr/chatterbox-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/chatterbox-GGUF/q8_0
-----
* Installer des voix :
# mkdir /opt/voices
Fichier <code>.wav</code> avec un nom de personnalité dans le dossier <code>/opt/voices</code>
Optionnellement on joint le fichier de la transcription exacte de l’enregistrement, exemple :
# vi /opt/voices/<font color = blue>henriette</font>.txt
 
bla bla bla
 
GGUF : :
cd /opt/CrispASR
python3 -m venv .venv-chatterbox
source .venv-chatterbox/bin/activate
pip install --upgrade pip
pip install numpy
source /opt/CrispASR/.venv-chatterbox/bin/activate
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install chatterbox-tts
pip install gguf
 
# python models/bake-chatterbox-voice-from-wav.py --input /opt/voices/henriette.wav --output /opt/voices/henriette.gguf
 
-----
# vi /etc/systemd/system/crispasr-tts.service
 
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend chatterbox \
    -m /opt/models/tts/chatterbox-GGUF/q8_0/chatterbox-t3-q8_0.gguf \
    --codec-model /opt/models/tts/chatterbox-GGUF/q8_0/chatterbox-s3gen-q8_0.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language <font color="blue">fr</font> \
    --host <font color="blue">0.0.0.0</font> \
    --port <font color="blue">7981</font>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
 
===== [https://huggingface.co/cstr/omnivoice-GGUF OmniVoice] =====
{{Méta bandeau
  | niveau = grave
  | icône = important
  | texte  =
Informations vérifiées le 23/07/2026. Basé sur Qwen3-TTS, ce modèle offre des performances et une qualité similaires, mais ne semble pas capable de conserver une voix fixe, probablement en raison d’un bug.
}}
Voir [[Client_Hugging_Face|Client Hugging Face]]
# hf download cstr/omnivoice-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/omnivoice-GGUF/q8_0
 
# vi /etc/systemd/system/crispasr-tts.service
 
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend omnivoice \
    -m /opt/models/tts/omnivoice-GGUF/q8_0/omnivoice-q8_0.gguf \
    --codec-model /opt/models/tts/omnivoice-GGUF/q8_0/omnivoice-tokenizer-q8_0.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language <font color="blue">fr</font> \
    --host <font color="blue">0.0.0.0</font> \
    --port <font color="blue">7981</font>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

Dernière version du 2 août 2026 à 14:15

Installation

  • On récupère le projet :
# cd /opt/
# git clone --recurse-submodules https://github.com/CrispStrobe/CrispASR
# cd CrispASR
# apt update
# apt install libopencore-amrnb-dev libopencore-amrwb-dev libopus-dev libopusfile-dev libopenblas-dev ccache libfdk-aac-dev libsentencepiece-dev sentencepiece libopenblas-dev libnccl2 libnccl-dev libmp3lame-dev
# ln -s /usr/lib/x86_64-linux-gnu/libopenblas.so /usr/local/lib/libcblas.so
# ldconfig
  • On configure la compilation en choisissant le backend adapté au matériel utilisé.

Version CPU :

# cmake -B build -DCMAKE_BUILD_TYPE=Release

Version NVIDIA avec CUDA — nécessite l’installation préalable du CUDA Toolkit :

# export CUDACXX=/usr/local/cuda-13.3/bin/nvcc
# cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON -DGGML_LTO=ON

Version Apple Silicon avec Metal :

# cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=ON

Version Vulkan — nécessite l’installation préalable des bibliothèques et outils de développement Vulkan :

# cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_VULKAN=ON
  • On lance ensuite la compilation :
# cmake --build build -j$(nproc)

Les exécutables sont générés dans le répertoire /opt/CrispASR/build/bin/.

Exemples

Speech-to-Text

Voir Client Hugging Face

# hf download cstr/parakeet-tdt-0.6b-v3-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/stt/parakeet-tdt-0.6b-v3/q8_0
# vi /etc/systemd/system/crispasr-stt.service
[Unit]
Description=CrispASR Speech-to-Text Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
Environment="CRISPASR_API_KEYS=masuperclef"
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend parakeet \
    -m /opt/models/stt/parakeet-tdt-0.6b-v3/q8_0/parakeet-tdt-0.6b-v3-q8_0.gguf \
    --language auto \
    --host 0.0.0.0 \
    --port 7980
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Text-to-Speech

Voir Client Hugging Face

# hf download cstr/qwen3-tts-0.6b-base-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0
# hf download cstr/qwen3-tts-tokenizer-12hz-GGUF --include "qwen3-tts-tokenizer-12hz.gguf" --local-dir /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0
# vi /etc/systemd/system/crispasr-tts.service
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
Environment="CRISPASR_API_KEYS=masuperclef"
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend qwen3-tts \
    -m /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0/qwen3-tts-12hz-0.6b-base-q8_0.gguf \
    --codec-model /opt/models/tts/qwen3-tts-0.6b-base-GGUF/q8_0/qwen3-tts-tokenizer-12hz.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language fr \
    --host 0.0.0.0 \
    --port 7981
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Voir Client Hugging Face

# hf download cstr/chatterbox-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/chatterbox-GGUF/q8_0

  • Installer des voix :
# mkdir /opt/voices

Fichier .wav avec un nom de personnalité dans le dossier /opt/voices Optionnellement on joint le fichier de la transcription exacte de l’enregistrement, exemple :

# vi /opt/voices/henriette.txt
bla bla bla

GGUF : :

cd /opt/CrispASR
python3 -m venv .venv-chatterbox
source .venv-chatterbox/bin/activate
pip install --upgrade pip
pip install numpy
source /opt/CrispASR/.venv-chatterbox/bin/activate
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install chatterbox-tts
pip install gguf
# python models/bake-chatterbox-voice-from-wav.py --input /opt/voices/henriette.wav --output /opt/voices/henriette.gguf

# vi /etc/systemd/system/crispasr-tts.service
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend chatterbox \
    -m /opt/models/tts/chatterbox-GGUF/q8_0/chatterbox-t3-q8_0.gguf \
    --codec-model /opt/models/tts/chatterbox-GGUF/q8_0/chatterbox-s3gen-q8_0.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language fr \
    --host 0.0.0.0 \
    --port 7981
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Voir Client Hugging Face

# hf download cstr/omnivoice-GGUF --include "*q8_0*.gguf" --local-dir /opt/models/tts/omnivoice-GGUF/q8_0
# vi /etc/systemd/system/crispasr-tts.service
[Unit]
Description=CrispASR Text-to-Speech Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/CrispASR
ExecStart=/opt/CrispASR/build/bin/crispasr \
    --server \
    --backend omnivoice \
    -m /opt/models/tts/omnivoice-GGUF/q8_0/omnivoice-q8_0.gguf \
    --codec-model /opt/models/tts/omnivoice-GGUF/q8_0/omnivoice-tokenizer-q8_0.gguf \
    --voice-dir /opt/voices \
    --i-have-rights \
    --language fr \
    --host 0.0.0.0 \
    --port 7981
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target