Empezar

Soniqo Cloud

¿Prefieres una API gestionada? La misma transcripción, síntesis y clonación como servicio — compatible con OpenAI y ElevenLabs. soniqo.audio/cloud →

Instala la CLI speech para transcribir y generar audio en tu Mac con Apple Silicon. Usa el SDK de Swift para añadir procesamiento de voz a tus aplicaciones de macOS e iOS.

Requisitos de la CLI

Instalar la CLI

Homebrew (CLI)

Usa Homebrew nativo para ARM (/opt/homebrew) para instalar speech y el servidor HTTP/WebSocket speech-server.

brew install speech
speech --help

Primera tarea: transcribir un archivo M4A

Descarga la grabación de ejemplo y transcríbela en la terminal:

Conéctate a internet para la primera ejecución. El modelo seleccionado se descarga desde HuggingFace y queda en la caché de tu Mac. Tras la configuración, puedes usarlo para transcribir grabaciones locales sin conexión.

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

Continuar con la guía de M4A a texto.

Inicio rápido: texto a voz

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

Ejecutar una API de voz local

Inicia el servidor HTTP/WebSocket para atender solicitudes locales a la API:

speech-server --port 8080

SDK de Swift

Añade los módulos de Swift a tu aplicación para macOS 15+ o iOS 18+ con Swift Package Manager.

Swift Package Manager

Añade speech-swift a las dependencias de tu Package.swift:

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

Luego añade los módulos que necesites a tu target:

.target(
    name: "MyApp",
    dependencies: [
        .product(name: "Qwen3ASR", package: "speech-swift"),
        .product(name: "Qwen3TTS", package: "speech-swift"),
        .product(name: "SpeechVAD", package: "speech-swift"),
        // ... add any modules you need
    ]
)

Módulos disponibles

MóduloDescripción
Qwen3ASRVoz a texto (Qwen3-ASR)
WhisperASRvoz a texto (Whisper Large-v3 Turbo, CoreML)
ParakeetASRVoz a texto (Parakeet TDT, CoreML)
Qwen3TTSTexto a voz (Qwen3-TTS)
CosyVoiceTTSTexto a voz (CosyVoice3, multilingüe)
KokoroTTSTexto a voz (Kokoro-82M, CoreML, listo para iOS)
Qwen3ChatChat LLM en el dispositivo (Qwen3.5-0.8B, MLX + CoreML)
PersonaPlexVoz a voz (PersonaPlex 7B)
SpeechVADVAD (Silero + Pyannote), diarización, embeddings de hablante
SpeechEnhancementSupresión de ruido (DeepFilterNet3, CoreML)
AudioCommonProtocolos compartidos, E/S de audio, descargador de HuggingFace

Transcribir audio con 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)

Generar voz con 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 desde el código fuente

Para compilar desde el código fuente, instala Xcode 16.3+ con Metal Toolchain y Swift 6+. Clona el repositorio, compila la CLI y comprueba el ejecutable del directorio de trabajo:

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

make build compila la librería de shaders MLX Metal automáticamente. Sin ella, la inferencia en GPU se ejecuta ~5x más lenta debido a la compilación JIT de shaders.

Los shaders se compilan para macOS 15.0 y Metal 3.2 por defecto, incluso con SDK más recientes. En compilaciones personalizadas, MACOSX_DEPLOYMENT_TARGET y MLX_METAL_LANGUAGE_VERSION cambian estos valores; destinos superiores pueden excluir sistemas antiguos. Los cambios del compilador, SDK, opciones, script o fuentes invalidan la caché. Si falla la compilación o el enlace, se conservan la biblioteca anterior y el hash de caché.

Descargas de modelos

Los modelos se descargan automáticamente desde HuggingFace en el primer uso y se almacenan en ~/Library/Caches/qwen3-speech/.

Todos los modelos se descargan desde HuggingFace en el primer uso. Tamaños aproximados:

ModeloTamañoUso 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 (4-bit LLM)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 pasos