시작하기

speech-swift는 Apple Silicon 기반 macOS와 iOS를 위한 온디바이스 AI 음성 처리를 제공합니다. 모델은 MLX (Metal GPU)와 CoreML (Neural Engine)을 사용해 로컬에서 실행됩니다.

요구사항

설치

Swift Package Manager

Package.swift의 의존성에 speech-swift를 추가합니다:

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

그런 다음 필요한 모듈을 타겟에 추가하세요:

.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)
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)
SpeechVADVAD (Silero + Pyannote), 화자 분리, 화자 임베딩
SpeechEnhancement노이즈 억제 (DeepFilterNet3, CoreML)
AudioCommon공유 프로토콜, 오디오 I/O, HuggingFace 다운로더

소스에서 빌드

저장소를 클론하고 빌드하세요:

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

make build는 MLX Metal 셰이더 라이브러리를 자동으로 컴파일합니다. 이것이 없으면 JIT 셰이더 컴파일 때문에 GPU 추론이 약 5배 느려집니다.

빠른 시작: 오디오 전사

CLI

# WAV 파일 전사
.build/release/audio transcribe recording.wav

Swift API

import Qwen3ASR

let model = try await Qwen3ASRModel.loadFromHub()
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)

모델은 첫 사용 시 HuggingFace에서 자동 다운로드되며 ~/Library/Caches/qwen3-speech/에 캐시됩니다.

빠른 시작: 텍스트-음성 변환

CLI

# 음성 생성
.build/release/audio speak "Hello, world!" --output hello.wav

Swift API

import Qwen3TTS

let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hello, world!")
try audio.write(to: "hello.wav")

모델 다운로드

모든 모델은 첫 사용 시 HuggingFace에서 다운로드됩니다. 대략적인 크기:

모델크기RAM 사용량
Qwen3-ASR 0.6B (4비트)680 MB피크 약 2.2 GB
Qwen3-ASR 0.6B (8비트)1.0 GB피크 약 2.5 GB
Qwen3-ASR 1.7B (4비트)2.1 GB피크 약 4 GB
Parakeet-TDT (CoreML INT8)500 MB피크 약 600 MB
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 VAD5.7 MB피크 약 20 MB
Silero VAD v51.2 MB피크 약 5 MB
WeSpeaker ResNet3425 MB피크 약 50 MB
DeepFilterNet3 (FP16)4.2 MB피크 약 10 MB

다음 단계