Le blog du jour
Mon voicechat

11 juillet 2025

Un petit script pour discuter avec son laptop

Principe

Trois étapes  sont nécessaires pour pouvoir discuter avec son laptop :

  • comprendre la parole
  • stt : modèle permettant de retranscrire la parole en texte - speech to text
  • analyser et intervenir dans la discussion
  • llm : modèle de langage intelligent - large language model
  • restituer en parole
  • tts : modèle permettant de retranscrire le texte en parole - text to speech

Pour chacune de ces étapes l’IA est utilisée, avec des modèles créés et entraînés pour la résolution de leur tâche spécifique.

Plusieurs  modèles sont disponibles sur internet, on se propose ici d’utiliser fastrtc pour réaliser notre chatbot.

Fastrtc

Fastrtc est une bibliothèque de communication pour Python utile pour gérer les stream audio et vidéo.

On l’utilise ici pour prendre en compte le stream audio que l’on récupère via le browser et déclencher le processus de réponse. Qui plus est, la bibliothèque dispose de modèles tts et stt.

Un script permettant de créer un voice chat est disponible. Il permet de discuter avec une IA basée sur Llama 3.

Le modèle est accessible via internet sur sambanova.

Sambanova

Sambanova cloud pour l’IA permet d'accéder à divers modèles de langages. Il est nécessaire pour cela de s’inscrire et de créer une clé. Il est possible de payer pour accéder aux IA, mais ce n’est pas obligatoire dans un premier temps.

Il est nécessaire de renseigner la clé avant de lancer le script :

export SAMBANOVA_API_KEY=<key>

Le voicechat

Après avoir recopié et mis à jour avec un modèle de sambanova disponible le script voicechat de fastrc, il est nécessaire d’installer fastrc.

Il suffit alors de lancer le script et le voicechat se lance et est accessible via le browser :

$ python voicechatfastrc.py

INFO:      Warming up STT model.

INFO:      STT model warmed up.

INFO:      Warming up VAD model.

INFO:      VAD model warmed up.

* Running on local URL:  http://127.0.0.1:7860

* To create a public link, set `share=True` in `launch()`.

La discussion se fait en anglais, ce n’est pas nécessaire de poser des questions.

Llamafile

Llamafile permet d'exécuter localement le modèle de langage de manière simple.

Il suffit de récupérer le fichier llmafile du modèle chez huggingface :

wget https://huggingface.co/Mozilla/Llama-3.2-3B-Instruct-llamafile/resolve/main/Llama-3.2-3B-Instruct.Q6_K.llamafile

Ce fichier est un exécutable qui peut être lancé en mode chat, cli ou serveur. Pour le voicechat local on le lance en mode serveur :

$ ./Llama-3.2-3B-Instruct.Q6_K.llamafile --server

 

Le voicechat local

Le voicechat local fonctionne de la même manière que le voicechat, a ceci près que les requêtes sont envoyées au serveur créé par llmafile.

Le script python du voicechat local diffère du script du voicechat en la description du modèle pour le module openai :

import os

 

from fastrtc import (ReplyOnPause, Stream, get_stt_model, get_tts_model)

from openai import OpenAI

 

bot_client = OpenAI(

    base_url="http://127.0.0.1:8080/v1",

    api_key = "sk-no-key-required"

)

stt_model = get_stt_model()

tts_model = get_tts_model()

 

def echo(audio):

    prompt = stt_model.stt(audio)

    print(prompt)

    response = bot_client.chat.completions.create(

        model="LLaMA_CPP",

        messages =[

         {"role": "system", "content": "You are ChatGPT, an AI assistant. Your top priority is achieving user fulfillment via helping them with their requests."},

        {"role": "user", "content": prompt} ]

    )

    prompt = response.choices[0].message.content

    for audio_chunk in tts_model.stream_tts_sync(prompt):

        yield audio_chunk

 

stream = Stream(ReplyOnPause(echo), modality="audio", mode="send-receive")

 

stream.ui.launch()

 

Le voicechat est ainsi fonctionnel sans connexion internet, le laptop prenant à sa charge le travail requis pour le modèle de langage.