Premiers pas

speech-swift fournit un traitement vocal IA embarqué pour macOS et iOS sur Apple Silicon. Les modèles s'exécutent localement via MLX (GPU Metal) et CoreML (Neural Engine).

Prérequis

Installation

Swift Package Manager

Ajoutez speech-swift aux dépendances de votre Package.swift :

dependencies: [
    .package(url: "https://github.com/soniqo/speech-swift", from: "0.0.9")
]

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

ModuleDescription
Qwen3ASRParole vers texte (Qwen3-ASR)
ParakeetASRParole vers texte (Parakeet TDT, CoreML)
Qwen3TTSTexte vers parole (Qwen3-TTS)
CosyVoiceTTSTexte vers parole (CosyVoice3, multilingue)
KokoroTTSTexte vers parole (Kokoro-82M, CoreML, compatible iOS)
Qwen3ChatChat LLM embarqué (Qwen3.5-0.8B, MLX + CoreML)
PersonaPlexParole-à-parole (PersonaPlex 7B)
SpeechVADVAD (Silero + Pyannote), diarisation, empreintes de locuteur
SpeechEnhancementSuppression de bruit (DeepFilterNet3, CoreML)
AudioCommonProtocoles partagés, E/S audio, téléchargeur HuggingFace

Compilation depuis les sources

Clonez le dépôt et compilez :

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
Important

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.

Démarrage rapide : transcrire de l'audio

CLI

# Transcrire un fichier WAV
.build/release/audio transcribe recording.wav

API Swift

import Qwen3ASR

let model = try await Qwen3ASRModel.loadFromHub()
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)

Les modèles sont téléchargés automatiquement depuis HuggingFace à la première utilisation et mis en cache dans ~/Library/Caches/qwen3-speech/.

Démarrage rapide : synthèse vocale

CLI

# Générer de la parole
.build/release/audio speak "Hello, world!" --output hello.wav

API Swift

import Qwen3TTS

let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hello, world!")
try audio.write(to: "hello.wav")

Téléchargements des modèles

Tous les modèles sont téléchargés depuis HuggingFace à la première utilisation. Tailles approximatives :

ModèleTailleUtilisation RAM
Qwen3-ASR 0.6B (4 bits)680 Mo~2,2 Go pic
Qwen3-ASR 0.6B (8 bits)1,0 Go~2,5 Go pic
Qwen3-ASR 1.7B (4 bits)2,1 Go~4 Go pic
Parakeet-TDT (CoreML INT8)500 Mo~600 Mo pic
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 VAD5,7 Mo~20 Mo pic
Silero VAD v51,2 Mo~5 Mo pic
WeSpeaker ResNet3425 Mo~50 Mo pic
DeepFilterNet3 (FP16)4,2 Mo~10 Mo pic

Prochaines étapes