Primeiros passos

O speech-swift oferece processamento de fala por IA no dispositivo para macOS e iOS em Apple Silicon. Os modelos rodam localmente usando MLX (GPU Metal) e CoreML (Neural Engine).

Requisitos

Instalação

Swift Package Manager

Adicione o speech-swift às dependências do seu Package.swift:

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

Depois adicione os módulos que você precisa ao seu target:

.target(
    name: "MyApp",
    dependencies: [
        .product(name: "Qwen3ASR", package: "speech-swift"),
        .product(name: "Qwen3TTS", package: "speech-swift"),
        .product(name: "SpeechVAD", package: "speech-swift"),
        // ... adicione quaisquer módulos que você precise
    ]
)

Módulos disponíveis

MóduloDescrição
Qwen3ASRFala para texto (Qwen3-ASR)
ParakeetASRFala para texto (Parakeet TDT, CoreML)
Qwen3TTSTexto para fala (Qwen3-TTS)
CosyVoiceTTSTexto para fala (CosyVoice3, multilíngue)
KokoroTTSTexto para fala (Kokoro-82M, CoreML, pronto para iOS)
Qwen3ChatChat LLM no dispositivo (Qwen3.5-0.8B, MLX + CoreML)
PersonaPlexFala para fala (PersonaPlex 7B)
SpeechVADVAD (Silero + Pyannote), diarização, embeddings de falante
SpeechEnhancementSupressão de ruído (DeepFilterNet3, CoreML)
AudioCommonProtocolos compartilhados, I/O de áudio, downloader do HuggingFace

Compilar a partir do código-fonte

Clone o repositório e compile:

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

O make build compila a biblioteca de shaders Metal do MLX automaticamente. Sem ela, a inferência em GPU roda ~5x mais lenta devido à compilação JIT dos shaders.

Início rápido: transcrever áudio

CLI

# Transcrever um arquivo 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)

Os modelos são baixados automaticamente do HuggingFace no primeiro uso e armazenados em cache em ~/Library/Caches/qwen3-speech/.

Início rápido: texto para fala

CLI

# Gerar fala
.build/release/audio speak "Olá, mundo!" --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")

Downloads de modelos

Todos os modelos são baixados do HuggingFace no primeiro uso. Tamanhos aproximados:

ModeloTamanhoUso de RAM
Qwen3-ASR 0.6B (4-bit)680 MB~2,2 GB pico
Qwen3-ASR 0.6B (8-bit)1.0 GB~2,5 GB pico
Qwen3-ASR 1.7B (4-bit)2.1 GB~4 GB pico
Parakeet-TDT (CoreML INT8)500 MB~600 MB pico
Qwen3-TTS 0.6B (4-bit)1.7 GB~2 GB pico
Qwen3-TTS 1.7B (4-bit)3.2 GB~4 GB pico
CosyVoice3 (LLM 4-bit)1.2 GB~1,5 GB pico
Kokoro-82M (CoreML INT8)89 MB~200 MB pico
Qwen3.5-Chat 0.8B (INT4 MLX)418 MB~700 MB pico
Qwen3.5-Chat 0.8B (INT8 CoreML)981 MB~1,2 GB pico
PersonaPlex 7B (8-bit) recomendado9.1 GB~11 GB pico
PersonaPlex 7B (4-bit)4.9 GB~6,5 GB pico
Pyannote VAD5.7 MB~20 MB pico
Silero VAD v51.2 MB~5 MB pico
WeSpeaker ResNet3425 MB~50 MB pico
DeepFilterNet3 (FP16)4.2 MB~10 MB pico

Próximos passos