시작하기
호스팅 API를 원하시나요? 동일한 전사·합성·클로닝을 관리형 서비스로 제공합니다 — OpenAI·ElevenLabs 호환. soniqo.audio/cloud →
speech CLI를 설치하면 Apple Silicon Mac에서 오디오를 전사하고 생성할 수 있습니다. Swift SDK로 macOS 및 iOS 앱에 음성 처리 기능을 추가할 수 있습니다.
CLI 요구사항
- macOS 15+ (Sequoia 이상)
- Apple Silicon (arm64)
- 최소 8 GB RAM (대형 모델은 16 GB 권장)
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
빠른 시작: 텍스트-음성 변환
speech speak "Hello, world!" --output hello.wav
로컬 음성 API 실행
로컬 API 요청을 처리할 HTTP/WebSocket 서버를 시작합니다:
speech-server --port 8080
Swift SDK
Swift Package Manager로 macOS 15+ 또는 iOS 18+ 앱에 Swift 모듈을 추가합니다.
Swift Package Manager
Package.swift의 의존성에 speech-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"))
소스에서 빌드
소스에서 빌드하려면 Metal Toolchain을 포함한 Xcode 16.3+와 Swift 6+를 설치하세요. 저장소를 복제하고 CLI를 빌드한 뒤 체크아웃 디렉터리의 실행 파일을 확인합니다:
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
make build는 MLX Metal 셰이더 라이브러리를 자동으로 컴파일합니다. 이것이 없으면 JIT 셰이더 컴파일 때문에 GPU 추론이 약 5배 느려집니다.
최신 SDK에서도 셰이더 빌드는 기본적으로 macOS 15.0과 Metal 3.2를 대상으로 합니다. 사용자 지정 빌드에서는 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비트) | 1.7 GB | 피크 약 2 GB |
| Qwen3-TTS 1.7B (4비트) | 3.2 GB | 피크 약 4 GB |
| CosyVoice3 (4비트 LLM) | 1.2 GB | 피크 약 1.5 GB |
| Kokoro-82M (CoreML INT8) | 89 MB | 피크 약 200 MB |
| Qwen3.5-Chat 0.8B (INT4 MLX) | 418 MB | 피크 약 700 MB |
| Qwen3.5-Chat 0.8B (INT8 CoreML) | 981 MB | 피크 약 1.2 GB |
| PersonaPlex 7B (8비트) 권장 | 9.1 GB | 피크 약 11 GB |
| PersonaPlex 7B (4비트) | 4.9 GB | 피크 약 6.5 GB |
| Pyannote VAD | 5.7 MB | 피크 약 20 MB |
| Silero VAD v5 | 1.2 MB | 피크 약 5 MB |
| WeSpeaker ResNet34 | 25 MB | 피크 약 50 MB |
| DeepFilterNet3 (FP16) | 4.2 MB | 피크 약 10 MB |
다음 단계
- M4A를 텍스트로 변환하는 가이드 보기
- CLI 레퍼런스 — 사용 가능한 모든 명령 및 옵션
- Qwen3-ASR 가이드 — 상세 음성-텍스트 문서
- Qwen3-TTS 가이드 — 상세 텍스트-음성 문서
- API 및 프로토콜 — 공유 프로토콜과 타입