Whisper.php - Reconnaissance et transcription automatiques de la parole

La reconnaissance vocale peut être complexe, mais ce n’est pas forcément le cas, car Whisper.php peut vous aider à simplifier le processus. Whisper.php est un wrapper PHP pour whisper.cpp, un port C/C++ du modèle Whisper d’OpenAI

Whisper.php - Reconnaissance et transcription automatiques de la parole

La reconnaissance vocale peut être complexe, mais ce n’est pas forcément le cas, car Whisper.php peut vous aider à simplifier le processus. Whisper.php est un wrapper PHP pour whisper.cpp un port C/C++ du modèle Whisper d’OpenAI. Ce package a été créé par Kyrian Obikwelu qui a récemment publié la v1.0.0, permettant une transcription entièrement locale et sans API directement dans vos projets. Il fournit :

  • API de haut et de bas niveau
  • Téléchargement automatique du modèle
  • Prise en charge de divers formats audio (e.g. MP3, WAV, OGG, M4A)
  • Exportations de plusieurs formats de sortie (e.g. TXT, SRT, VTT ou CSV)
  • Prise en charge du rappel pour la diffusion en continu et le suivi de la progression

Whisper.php nécessite l’installation et l’activation de l’extension FFI (Foreign Function Interface) en PHP. Cette extension vous permet d’interagir avec les bibliothèques C directement à partir de PHP.

En supposant que vous ayez activé FFI, pour installer Whisper.php, vous devez exécuter :

composer require codewithkyrian/whisper.php

Whisper.php propose des API de bas niveau et de haut niveau. L’API de bas niveau fournit un contrôle précis du processus de transcription, reflétant étroitement l’implémentation C d’origine. L’API de haut niveau offre une interface plus simple et plus abstraite pour un flux de travail rationalisé.

Pour les besoins de cet article, nous utiliserons l’API de haut niveau.

use Codewithkyrian\Whisper\Whisper;
use function Codewithkyrian\Whisper\readAudio;
use function Codewithkyrian\Whisper\toTimestamp;
 
// Transcribe Audio
$whisper = Whisper::fromPretrained('tiny.en', baseDir: __DIR__.'/models');
$audio = readAudio(__DIR__.'/audio/laravel-news-227-sample.mp3');
$segments = $whisper->transcribe($audio, 4);
 
// Output transcribed segment data
foreach ($segments as $segment) {
    echo toTimestamp($segment->startTimestamp) . ': ' . $segment->text . "\n";
}

Whisper.php s’appuie sur des bibliothèques partagées spécifiques à la plate-forme. En tant que tels, ils seront automatiquement téléchargés la première fois que vous initialisez un modèle et stockés dans notre répertoire. Le téléchargement initial entraînera un léger retard lors de la première exécution, mais heureusement, une fois les bibliothèques mises en cache, les exécutions suivantes seront beaucoup plus rapides. Certains des modèles de base Whisper pris en charge sont : , , entre autres. Whisper::fromPretrained() models tiny.en basebase.en

Ensuite, la fonction simplifie le traitement audio en le rééchantillonnant à 16 kHz, un équilibre entre qualité audio et efficacité. Cela permet de capturer les fréquences fondamentales de la parole humaine tout en réduisant la quantité de données à traiter. readAudio()

La méthode prend ensuite l’audio rééchantillonné et le divise en segments avec des horodatages de début et de fin avec le texte, que nous pouvons sortir dans le format souhaité. transcribe()

Vous pouvez en savoir plus sur ce package et afficher le code source sur GitHub.

Steven KOULO
Steven KOULODéveloppeur Fullstack

Besoin d'un développeur pour votre prochain projet ? Je suis disponible pour des missions freelance.

Me contacter