Primeiros passos

Soniqo Cloud

Prefere uma API hospedada? A mesma transcrição, síntese e clonagem como serviço gerenciado — compatível com OpenAI e ElevenLabs. soniqo.audio/cloud →

Instale a CLI speech para transcrever e gerar áudio no seu Mac com Apple Silicon. Use o SDK Swift para adicionar processamento de fala aos seus aplicativos macOS e iOS.

Requisitos da CLI

Instalar a CLI

Homebrew (CLI)

Use o Homebrew nativo para ARM (/opt/homebrew) para instalar speech e o servidor HTTP/WebSocket speech-server.

brew install speech
speech --help

Primeira tarefa: transcrever um arquivo M4A

Baixe a gravação de exemplo e transcreva-a no terminal:

Conecte-se à internet na primeira execução. O modelo escolhido é baixado do HuggingFace e fica no cache do seu Mac. Após a configuração, você pode usá-lo para transcrever gravações locais offline.

curl -fL https://soniqo.audio/audio/samples/cli/transcription-sample.m4a -o transcription-sample.m4a
speech transcribe transcription-sample.m4a --engine parakeet

Continuar com o guia de M4A para texto.

Início rápido: texto para fala

speech speak "Hello, world!" --output hello.wav

Executar uma API de fala local

Inicie o servidor HTTP/WebSocket para atender às solicitações locais da API:

speech-server --port 8080

SDK Swift

Adicione os módulos Swift ao seu aplicativo para macOS 15+ ou iOS 18+ com o Swift Package Manager.

Swift Package Manager

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

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

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)
WhisperASRfala para texto (Whisper Large-v3 Turbo, CoreML)
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

Transcrever áudio com 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)

Gerar fala com 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"))

Compilar a partir do código-fonte

Para compilar a partir do código-fonte, instale o Xcode 16.3+ com o Metal Toolchain e o Swift 6+. Clone o repositório, compile a CLI e confira o executável no diretório de trabalho:

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
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.

Os shaders são compilados para macOS 15.0 e Metal 3.2 por padrão, mesmo com SDKs mais recentes. Em compilações personalizadas, MACOSX_DEPLOYMENT_TARGET e MLX_METAL_LANGUAGE_VERSION alteram esses valores; destinos superiores podem excluir sistemas antigos. Alterações no compilador, SDK, opções, script ou fontes invalidam o cache. Falhas de compilação ou vinculação preservam a biblioteca anterior e o hash do cache.

Downloads de modelos

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

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

ModeloTamanhoUso de 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-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