Formats supportés et langues
Formats supportés et langues
Whisper accepte une large variété de formats audio et prend en charge des dizaines de langues. Choisir le bon format d’entrée et configurer correctement la langue impacte directement la qualité de transcription et les coûts. Cette leçon détaille les options disponibles et les meilleures pratiques.
Formats audio acceptés
L’API Whisper accepte les formats suivants :
| Format | Extension | Compression | Usage recommandé |
|---|---|---|---|
| MP3 | .mp3 | Lossy, bon ratio | Podcasts, enregistrements vocaux |
| MP4 / M4A | .mp4, .m4a | AAC lossy | Vidéos, enregistrements mobiles |
| WAV | .wav | Non compressé | Enregistrements studio |
| WebM | .webm | Opus lossy | Enregistrements navigateur |
| FLAC | .flac | Lossless | Qualité maximale sans perte |
| OGG | .ogg | Vorbis/Opus | Applications open source |
La taille maximale par fichier est de 25 Mo. Pour un MP3 à 128 kbps, cela représente environ 25 minutes d’audio. Pour du WAV non compressé, c’est beaucoup moins.
Optimiser la taille des fichiers
from pydub import AudioSegment
def optimize_for_whisper(input_path: str, output_path: str):
"""Convertit un fichier audio en MP3 optimisé pour Whisper."""
audio = AudioSegment.from_file(input_path)
# Convertir en mono 16kHz (suffisant pour la parole)
audio = audio.set_channels(1)
audio = audio.set_frame_rate(16000)
# Exporter en MP3 64kbps (bon compromis qualité/taille pour la voix)
audio.export(output_path, format="mp3", bitrate="64k")
return output_path
Langues supportées
Whisper reconnaît plus de 50 langues. La détection est automatique, mais spécifier la langue améliore la précision :
# Détection automatique (par défaut)
result = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
# Langue explicite (recommandé)
result = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="fr" # Code ISO 639-1
)
Langues européennes courantes
Les codes ISO 639-1 les plus utilisés en Europe :
EUROPEAN_LANGUAGES = {
"fr": "Français",
"en": "Anglais",
"de": "Allemand",
"es": "Espagnol",
"it": "Italien",
"pt": "Portugais",
"nl": "Néerlandais",
"pl": "Polonais",
"ro": "Roumain",
"sv": "Suédois",
"da": "Danois",
"fi": "Finnois",
"el": "Grec",
"cs": "Tchèque",
"hu": "Hongrois",
"bg": "Bulgare",
"hr": "Croate",
"sk": "Slovaque",
"sl": "Slovène",
"et": "Estonien",
"lv": "Letton",
"lt": "Lituanien",
}
Gestion du multilingue
Pour les fichiers contenant plusieurs langues (réunions internationales), Whisper gère la transition automatiquement. Cependant, la qualité est meilleure en traitant chaque segment séparément :
from pydub import AudioSegment
from pydub.silence import split_on_silence
def transcribe_multilingual(file_path: str):
"""Transcription adaptée aux fichiers multilingues."""
# Première passe : détecter la langue dominante
with open(file_path, "rb") as f:
result = client.audio.transcriptions.create(
model="whisper-1",
file=f,
response_format="verbose_json"
)
detected_language = result.language
print(f"Langue détectée : {detected_language}")
# Deuxième passe avec la langue détectée
with open(file_path, "rb") as f:
result = client.audio.transcriptions.create(
model="whisper-1",
file=f,
language=detected_language,
response_format="verbose_json"
)
return result
Facturation
Whisper est facturé à la minute d’audio traité, arrondi à la seconde la plus proche. Le format du fichier n’influence pas le coût — seule la durée de l’audio compte.
Pour réduire les coûts sur de grands volumes :
def preprocess_for_cost(file_path: str) -> str:
"""Supprime les silences pour réduire la durée facturée."""
audio = AudioSegment.from_file(file_path)
# Supprimer les silences supérieurs à 1 seconde
chunks = split_on_silence(
audio,
min_silence_len=1000,
silence_thresh=-40,
keep_silence=200 # Garder 200ms de silence pour la lisibilité
)
if not chunks:
return file_path
combined = chunks[0]
for chunk in chunks[1:]:
combined += chunk
output_path = "/tmp/optimized_audio.mp3"
combined.export(output_path, format="mp3", bitrate="64k")
return output_path
Points clés à retenir
- Whisper accepte MP3, MP4, WAV, WebM, FLAC et OGG, avec une limite de 25 Mo par fichier
- Spécifier la langue avec le code ISO 639-1 améliore la précision par rapport à la détection automatique
- Le MP3 mono 16 kHz à 64 kbps offre le meilleur compromis qualité/taille pour la voix
- La facturation est à la minute d’audio : supprimer les silences réduit les coûts
- Pour le multilingue, une première passe de détection suivie d’une seconde passe ciblée donne les meilleurs résultats