Référence APIFormats audioIndex

Formats audio supportés

Formats audio acceptés par l’API et spécifications recommandées.


Formats supportés

FormatExtensionCompressionQualitéRecommandé
PCM 16-bit.pcmAucuneExcellente✅ Oui
WAV.wavAucuneExcellente✅ Oui
FLAC.flacLosslessExcellente✅ Oui
MP3.mp3LossyBonne⚠️ Acceptable
M4A/AAC.m4aLossyBonne⚠️ Acceptable
OGG.oggLossyMoyenne❌ Non recommandé

Spécifications audio

Recommandé

  • Sample rate : 16000 Hz (optimal)
  • Bit depth : 16-bit minimum
  • Channels : 1 (mono)
  • Encoding : PCM little-endian

Supporté

  • Sample rates : 8000, 16000, 22050, 44100, 48000 Hz
  • Channels : 1 (mono) ou 2 (stéréo, converti en mono)
  • Bit depth : 16-bit ou 32-bit float

Limitations par plan

PlanTaille max fichierDurée max sessionDurée max fichier
Free25 MB30 min10 min
Starter100 MB2h1h
Professional500 MB8h4h
EnterpriseIllimitéIllimitéIllimité

Recommandations de qualité audio

  • Sample rate optimal : 16000 Hz (minimum 8000 Hz)
  • Bit depth : 16-bit minimum
  • Channels : Mono (stéréo converti automatiquement)
  • Débit : 16-32 kbps minimum
  • Format : PCM ou WAV non compressé pour meilleure qualité

Conversion audio

FFmpeg (tous formats)

# Conversion vers PCM 16-bit, 16kHz, mono
ffmpeg -i input.mp3 -ar 16000 -ac 1 -f s16le output.pcm

SoX (Linux/Mac)

# Conversion vers WAV 16kHz, mono
sox input.mp3 -r 16000 -c 1 output.wav

Python (pydub)

from pydub import AudioSegment
 
audio = AudioSegment.from_file("input.mp3")
audio = audio.set_frame_rate(16000)
audio = audio.set_channels(1)
audio.export("output.wav", format="wav")

JavaScript (Web Audio API)

// Conversion depuis getUserMedia
const audioContext = new AudioContext({ sampleRate: 16000 });
const source = audioContext.createMediaStreamSource(stream);
const processor = audioContext.createScriptProcessor(4096, 1, 1);
 
processor.onaudioprocess = (e) => {
  const inputData = e.inputBuffer.getChannelData(0);
  // Convertir Float32Array en Int16Array (PCM 16-bit)
  const int16Data = new Int16Array(inputData.length);
  for (let i = 0; i < inputData.length; i++) {
    int16Data[i] = Math.max(-32768, Math.min(32767, inputData[i] * 32768));
  }
  // Envoyer int16Data.buffer via WebSocket
};

Bonnes pratiques

  • ✅ Utiliser PCM 16-bit, 16kHz, mono pour la meilleure qualité
  • ✅ Éviter la compression si possible (WAV, FLAC)
  • ✅ Tester la qualité audio avant l’envoi
  • ✅ Vérifier le niveau audio (pas trop faible, pas de saturation)
  • ✅ Réduire le bruit de fond si possible