Начало работы
Нужен managed API? Те же транскрипция, синтез и клонирование как облачный сервис — совместимо с OpenAI и ElevenLabs. soniqo.audio/cloud →
Установите CLI speech, чтобы расшифровывать и создавать аудио на Mac с Apple Silicon. Используйте Swift SDK для добавления обработки речи в приложения macOS и iOS.
Требования для CLI
- macOS 15+ (Sequoia или новее)
- Apple Silicon (arm64)
- Минимум 8 ГБ RAM (16 ГБ рекомендуется для более крупных моделей)
Установка CLI
Homebrew (CLI)
Используйте нативную ARM-версию Homebrew (/opt/homebrew) для установки speech и HTTP/WebSocket-сервера speech-server.
brew install speech
speech --help
Первая задача: расшифровка файла M4A
Скачайте пример записи и расшифруйте его в терминале:
Для первого запуска подключитесь к интернету. Выбранная модель загрузится с HuggingFace и останется в кэше на Mac. После настройки вы сможете расшифровывать локальные записи этой моделью без интернета.
curl -fL https://soniqo.audio/audio/samples/cli/transcription-sample.m4a -o transcription-sample.m4a
speech transcribe transcription-sample.m4a --engine parakeet
Перейти к руководству по преобразованию M4A в текст.
Быстрый старт: синтез речи
speech speak "Hello, world!" --output hello.wav
Запуск локального речевого API
Запустите HTTP/WebSocket-сервер для локальных запросов к API:
speech-server --port 8080
Swift SDK
Добавьте модули Swift в приложение для macOS 15+ или iOS 18+ через Swift Package Manager.
Swift Package Manager
Добавьте speech-swift в зависимости Package.swift:
dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")
]
Затем добавьте нужные модули в ваш таргет:
.target(
name: "MyApp",
dependencies: [
.product(name: "Qwen3ASR", package: "speech-swift"),
.product(name: "Qwen3TTS", package: "speech-swift"),
.product(name: "SpeechVAD", package: "speech-swift"),
// ... добавьте нужные модули
]
)
Доступные модули
| Модуль | Описание |
|---|---|
Qwen3ASR | Распознавание речи (Qwen3-ASR) |
WhisperASR | распознавание речи (Whisper Large-v3 Turbo, CoreML) |
ParakeetASR | Распознавание речи (Parakeet TDT, CoreML) |
Qwen3TTS | Синтез речи (Qwen3-TTS) |
CosyVoiceTTS | Синтез речи (CosyVoice3, многоязычный) |
KokoroTTS | Синтез речи (Kokoro-82M, CoreML, готов для iOS) |
Qwen3Chat | Локальный LLM-чат (Qwen3.5-0.8B, MLX + CoreML) |
PersonaPlex | Речь в речь (PersonaPlex 7B) |
SpeechVAD | VAD (Silero + Pyannote), диаризация, эмбеддинги спикеров |
SpeechEnhancement | Подавление шума (DeepFilterNet3, CoreML) |
AudioCommon | Общие протоколы, аудио I/O, загрузчик HuggingFace |
Расшифровка аудио на 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)
Синтез речи на 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"))
Сборка из исходников
Для сборки из исходников установите Xcode 16.3+ с Metal Toolchain и Swift 6+. Клонируйте репозиторий, соберите CLI и проверьте исполняемый файл в рабочем каталоге:
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
make build автоматически компилирует библиотеку Metal-шейдеров MLX. Без неё GPU-инференс работает примерно в 5 раз медленнее из-за JIT-компиляции шейдеров.
По умолчанию шейдеры собираются для macOS 15.0 и Metal 3.2, даже с более новым SDK. Для собственной сборки MACOSX_DEPLOYMENT_TARGET и MLX_METAL_LANGUAGE_VERSION меняют эти значения; повышение целевых версий может исключить старые системы. Изменения компилятора, SDK, флагов, скрипта или исходных файлов делают кэш недействительным. При ошибке компиляции или компоновки сохраняются предыдущая библиотека и хеш кэша.
Загрузка моделей
Модели автоматически скачиваются с HuggingFace при первом использовании и кэшируются в ~/Library/Caches/qwen3-speech/.
Все модели скачиваются с HuggingFace при первом использовании. Примерные размеры:
| Модель | Размер | Использование 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 ГБ | ~2 ГБ пиковое |
| Qwen3-TTS 1.7B (4-bit) | 3.2 ГБ | ~4 ГБ пиковое |
| CosyVoice3 (4-bit LLM) | 1.2 ГБ | ~1.5 ГБ пиковое |
| Kokoro-82M (CoreML INT8) | 89 МБ | ~200 МБ пиковое |
| Qwen3.5-Chat 0.8B (INT4 MLX) | 418 МБ | ~700 МБ пиковое |
| Qwen3.5-Chat 0.8B (INT8 CoreML) | 981 МБ | ~1.2 ГБ пиковое |
| PersonaPlex 7B (8-bit) рекомендуется | 9.1 ГБ | ~11 ГБ пиковое |
| PersonaPlex 7B (4-bit) | 4.9 ГБ | ~6.5 ГБ пиковое |
| Pyannote VAD | 5.7 МБ | ~20 МБ пиковое |
| Silero VAD v5 | 1.2 МБ | ~5 МБ пиковое |
| WeSpeaker ResNet34 | 25 МБ | ~50 МБ пиковое |
| DeepFilterNet3 (FP16) | 4.2 МБ | ~10 МБ пиковое |
Следующие шаги
- Перейти к руководству по преобразованию M4A в текст
- Справочник CLI — все доступные команды и опции
- Руководство Qwen3-ASR — подробная документация по распознаванию речи
- Руководство Qwen3-TTS — подробная документация по синтезу речи
- API и протоколы — общие протоколы и типы