SDK Python et terminal

Le SDK officiel s’installe avec pip et fournit une bibliothèque Python et la commande lexiafrik.

pip install lexiafrik

Python 3.8 ou plus récent.

Se connecter depuis le terminal

lexiafrik login      # affiche un code, ouvre le navigateur, enregistre une clé
lexiafrik whoami     # clé enregistrée et offre
lexiafrik logout     # supprime les identifiants et révoque la clé de ce terminal

lexiafrik login n’utilise ni mot de passe, ni clé à copier : vous vous connectez sur lexiafrik.com, vérifiez que le code affiché dans le terminal est bien le même sur la page, puis cliquez sur Autoriser. Une clé dédiée à ce terminal est créée sur votre compte et enregistrée dans ~/.lexiafrik/credentials.json (lisible par vous seul).

Options de login : --no-browser (affiche seulement le lien, utile en SSH), --name "Mon portable" (nom affiché lors de l’approbation et nom de la clé). logout --keep-key efface le fichier sans révoquer la clé.

Pour un serveur ou l’intégration continue

Ne vous connectez pas par lexiafrik login : créez une clé sur la page Clés API du site et fournissez-la par la variable d’environnement LEXIAFRIK_API_KEY.

Utiliser le client

from lexiafrik import LexiAfrikClient

client = LexiAfrikClient()    # clé : api_key=, sinon LEXIAFRIK_API_KEY, sinon `lexiafrik login`

# Fichier court (50 Mo maximum) : réponse immédiate
result = client.transcribe("discours.wav", language="wo", include_segments=True)
print(result.text)
for seg in result.segments:
    print(seg)                # [0.4s → 6.1s] Premier segment.

# Gros fichier ou vidéo : envoi direct, job asynchrone, attente du résultat
result = client.transcribe_large("conference.mp4", language="wo",
                                 on_progress=lambda n: print(n, "segments"))
print(result.text, result.audio_url)

# Lien direct vers un fichier
result = client.transcribe_url("https://exemple.com/enregistrement.mp3", language="wo")

# Compte et historique
account = client.get_account()
print(account.plan_name, account.available_minutes, "min disponibles")
for t in client.list_transcriptions(page_size=5).items:
    print(t.request_id, t.status, t.title)

Le client est aussi un gestionnaire de contexte (with LexiAfrikClient() as client:) qui ferme proprement les connexions.

MéthodeRôle
transcribe(audio, language=, include_segments=, keep_audio=)Fichier court (chemin, octets ou fichier ouvert) : POST /v1/transcribe.
transcribe_large(fichier, language=, title=, on_progress=)Gros fichier ou vidéo : envoi, job, attente.
transcribe_url(url, language=, …)Lien direct (ou upload_key=) : job puis attente.
upload(fichier)Envoie un fichier au stockage et renvoie son upload_key.
start_transcription(…) · get_task(id) · wait_for_task(id)Les trois étapes d’un job, séparément (par exemple pour ne pas attendre).
list_languages()Langues disponibles.
get_account()Offre, quota mensuel restant, crédit. get_usage() en est l’ancien nom.
list_transcriptions(page, page_size, status) · get_transcription(id) · delete_transcription(id)Historique.
health()État de l’API.

Le résultat (TranscriptionResult) expose text (alias full_text), language, duration_s, n_segments, segments (chacun avec start_s, end_s, text, audio_url), audio_url et request_id.

Migration depuis la version 1

Le SDK 2.0 suit l’API actuelle : transcribe() renvoie un seul type de résultat pour tous les modes, get_usage() renvoie le compte (offre, quota mensuel, crédit) et non plus des limites journalières, et transcribe_url() n’accepte plus les liens YouTube. Les champs model, n_tokens et rtf du résultat n’existent plus.

Erreurs

Toutes les erreurs héritent de LexiAfrikError.

ExceptionCas
AuthenticationErrorClé invalide, révoquée ou compte suspendu (401, 403).
QuotaExceededErrorQuota et crédit épuisés (402).
NotFoundErrorTranscription ou tâche inconnue (404).
AudioTooLargeErrorFichier trop gros pour la route, ou pour votre offre (413).
UnsupportedFormatErrorFormat non pris en charge (415).
TranscriptionErrorLangue inconnue, audio illisible, job en échec, délai dépassé (422).
RateLimitErrorTrop de tentatives (429).
APIErrorErreur du service (5xx) ; status_code donne le code.
from lexiafrik import LexiAfrikClient, QuotaExceededError, AuthenticationError

try:
    LexiAfrikClient().transcribe("audio.wav")
except AuthenticationError:
    print("Clé invalide : relancez `lexiafrik login`")
except QuotaExceededError:
    print("Quota épuisé : rechargez votre crédit")

Variables d’environnement

VariableRôle
LEXIAFRIK_API_KEYClé API (prioritaire sur le fichier enregistré).
LEXIAFRIK_BASE_URLAutre adresse d’API (tests). Défaut : https://api.lexiafrik.com.
LEXIAFRIK_CREDENTIALSAutre emplacement du fichier d’identifiants.

Sécurité du fichier d’identifiants

Le fichier est créé avec les droits 0600 sous Linux et macOS (lisible par vous seul). Sous Windows, il reste dans votre dossier personnel. Si vous le perdez ou si votre ordinateur est compromis, révoquez la clé depuis la page Clés API : les autres clés ne sont pas touchées.