Premiers pas
Vous préférez une API hébergée ? Les mêmes transcription, synthèse et clonage en service managé — compatible OpenAI et ElevenLabs. soniqo.audio/cloud →
Installez la CLI speech pour transcrire et générer de l’audio sur votre Mac Apple Silicon. Utilisez le SDK Swift pour intégrer le traitement vocal à vos applications macOS et iOS.
Prérequis de la CLI
- macOS 15+ (Sequoia ou ultérieur)
- Apple Silicon (arm64)
- 8 Go de RAM minimum (16 Go recommandés pour les modèles plus grands)
Installer la CLI
Homebrew (CLI)
Utilisez la version ARM native de Homebrew (/opt/homebrew) pour installer speech et le serveur HTTP/WebSocket speech-server.
brew install speech
speech --help
Première tâche : transcrire un fichier M4A
Téléchargez l’enregistrement d’exemple, puis transcrivez-le dans le terminal :
Connectez-vous à internet pour la première exécution. Le modèle sélectionné se télécharge depuis HuggingFace et reste en cache sur votre Mac. Une fois la configuration terminée, vous pouvez transcrire des enregistrements locaux hors ligne avec ce modèle.
curl -fL https://soniqo.audio/audio/samples/cli/transcription-sample.m4a -o transcription-sample.m4a
speech transcribe transcription-sample.m4a --engine parakeet
Continuer avec le guide M4A vers texte.
Démarrage rapide : synthèse vocale
speech speak "Hello, world!" --output hello.wav
Lancer une API vocale locale
Démarrez le serveur HTTP/WebSocket pour traiter les requêtes API locales :
speech-server --port 8080
SDK Swift
Ajoutez les modules Swift à votre application macOS 15+ ou iOS 18+ avec Swift Package Manager.
Swift Package Manager
Ajoutez speech-swift aux dépendances de votre Package.swift :
dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")
]
Puis ajoutez les modules dont vous avez besoin à votre cible :
.target(
name: "MyApp",
dependencies: [
.product(name: "Qwen3ASR", package: "speech-swift"),
.product(name: "Qwen3TTS", package: "speech-swift"),
.product(name: "SpeechVAD", package: "speech-swift"),
// ... ajoutez tous les modules dont vous avez besoin
]
)
Modules disponibles
| Module | Description |
|---|---|
Qwen3ASR | Parole vers texte (Qwen3-ASR) |
WhisperASR | reconnaissance vocale (Whisper Large-v3 Turbo, CoreML) |
ParakeetASR | Parole vers texte (Parakeet TDT, CoreML) |
Qwen3TTS | Texte vers parole (Qwen3-TTS) |
CosyVoiceTTS | Texte vers parole (CosyVoice3, multilingue) |
KokoroTTS | Texte vers parole (Kokoro-82M, CoreML, compatible iOS) |
Qwen3Chat | Chat LLM embarqué (Qwen3.5-0.8B, MLX + CoreML) |
PersonaPlex | Parole-à-parole (PersonaPlex 7B) |
SpeechVAD | VAD (Silero + Pyannote), diarisation, empreintes de locuteur |
SpeechEnhancement | Suppression de bruit (DeepFilterNet3, CoreML) |
AudioCommon | Protocoles partagés, E/S audio, téléchargeur HuggingFace |
Transcrire de l’audio avec Swift
import Qwen3ASR
let model = try await Qwen3ASRModel.fromPretrained()
// audioSamples: [Float] PCM at 16 kHz (e.g. decoded from a WAV)
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)
print(text)
Générer de la parole avec Swift
import Qwen3TTS
import AudioCommon
let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesize(text: "Hello, world!", language: "english")
try WAVWriter.write(samples: audio, sampleRate: 24000, to: URL(filePath: "hello.wav"))
Compilation depuis les sources
Pour compiler depuis les sources, installez Xcode 16.3+ avec Metal Toolchain et Swift 6+. Clonez le dépôt, compilez la CLI, puis vérifiez l’exécutable dans le répertoire de travail :
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
make build compile automatiquement la bibliothèque de shaders MLX Metal. Sans elle, l'inférence GPU est environ 5× plus lente à cause de la compilation JIT des shaders.
Les shaders ciblent par défaut macOS 15.0 et Metal 3.2, même avec un SDK plus récent. Pour une compilation personnalisée, MACOSX_DEPLOYMENT_TARGET et MLX_METAL_LANGUAGE_VERSION remplacent ces valeurs ; des cibles plus récentes peuvent exclure les anciens systèmes. Les changements du compilateur, du SDK, des options, du script ou des sources invalident le cache. Un échec de compilation ou de liaison préserve la bibliothèque précédente et l’empreinte du cache.
Téléchargements des modèles
Les modèles sont téléchargés automatiquement depuis HuggingFace à la première utilisation et mis en cache dans ~/Library/Caches/qwen3-speech/.
Tous les modèles sont téléchargés depuis HuggingFace à la première utilisation. Tailles approximatives :
| Modèle | Taille | Utilisation RAM |
|---|---|---|
| Qwen3-ASR 0.6B (4-bit MLX) | 680 MB | ~1.0 GB peak |
| Qwen3-ASR 0.6B (8-bit MLX) | 1.0 GB | ~1.3 GB peak |
| Qwen3-ASR 0.6B (CoreML INT8) | 180 MB | ~1.4 GB peak |
| Qwen3-ASR 1.7B (4-bit MLX) | 2.1 GB | ~3 GB peak |
| Qwen3-ASR 1.7B (8-bit MLX) | 3.2 GB | ~2.7 GB peak |
| Parakeet-TDT v3 (CoreML INT8) | 500 MB | ~900 MB peak |
| Whisper Large-v3 Turbo (CoreML FP16) | 1.6 GB | ~384 MB peak |
| Omnilingual CTC 300M (4-bit MLX) | 193 MB | ~400 MB peak |
| Omnilingual CTC 300M (CoreML INT8) | 312 MB | ~550 MB peak |
| Qwen3-TTS 0.6B (4 bits) | 1,7 Go | ~2 Go pic |
| Qwen3-TTS 1.7B (4 bits) | 3,2 Go | ~4 Go pic |
| CosyVoice3 (LLM 4 bits) | 1,2 Go | ~1,5 Go pic |
| Kokoro-82M (CoreML INT8) | 89 Mo | ~200 Mo pic |
| Qwen3.5-Chat 0.8B (INT4 MLX) | 418 Mo | ~700 Mo pic |
| Qwen3.5-Chat 0.8B (INT8 CoreML) | 981 Mo | ~1,2 Go pic |
| PersonaPlex 7B (8 bits) recommandé | 9,1 Go | ~11 Go pic |
| PersonaPlex 7B (4 bits) | 4,9 Go | ~6,5 Go pic |
| Pyannote VAD | 5,7 Mo | ~20 Mo pic |
| Silero VAD v5 | 1,2 Mo | ~5 Mo pic |
| WeSpeaker ResNet34 | 25 Mo | ~50 Mo pic |
| DeepFilterNet3 (FP16) | 4,2 Mo | ~10 Mo pic |
Prochaines étapes
- Continuer avec le guide M4A vers texte
- Référence CLI — toutes les commandes et options disponibles
- Guide Qwen3-ASR — documentation détaillée de la parole vers texte
- Guide Qwen3-TTS — documentation détaillée de la synthèse vocale
- API et protocoles — protocoles et types partagés