Bắt đầu

speech-swift cung cấp khả năng xử lý giọng nói bằng AI trên thiết bị cho macOS và iOS chạy trên Apple Silicon. Các mô hình chạy cục bộ thông qua MLX (Metal GPU) và CoreML (Neural Engine).

Yêu cầu

Cài đặt

Homebrew (CLI)

Cách nhanh nhất để dùng thử speech-swift trên macOS. Cài đặt cả CLI speech và máy chủ HTTP/WebSocket speech-server (endpoint /v1/realtime tương thích OpenAI). Yêu cầu Homebrew ARM gốc (/opt/homebrew).

brew install soniqo/tap/speech

Sau khi cài đặt, cả hai tệp thực thi đều có sẵn trong PATH của bạn:

speech transcribe recording.wav
speech speak "Hello, world!" --output hello.wav
speech-server --port 8080            # máy chủ HTTP / WebSocket cục bộ

Swift Package Manager

Thêm speech-swift vào các phụ thuộc trong Package.swift của bạn:

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

Sau đó thêm các module bạn cần vào 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
    ]
)

Các module có sẵn

ModuleMô tả
Qwen3ASRGiọng nói thành văn bản (Qwen3-ASR)
ParakeetASRGiọng nói thành văn bản (Parakeet TDT, CoreML)
Qwen3TTSVăn bản thành giọng nói (Qwen3-TTS)
CosyVoiceTTSVăn bản thành giọng nói (CosyVoice3, đa ngôn ngữ)
KokoroTTSVăn bản thành giọng nói (Kokoro-82M, CoreML, sẵn sàng cho iOS)
Qwen3ChatChat LLM trên thiết bị (Qwen3.5-0.8B, MLX + CoreML)
PersonaPlexGiọng nói tới giọng nói (PersonaPlex 7B)
SpeechVADVAD (Silero + Pyannote), phân tách người nói, embedding người nói
SpeechEnhancementKhử nhiễu (DeepFilterNet3, CoreML)
AudioCommonGiao thức dùng chung, I/O âm thanh, trình tải HuggingFace

Biên dịch từ mã nguồn

Sao chép kho mã và biên dịch:

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
Quan trọng

make build sẽ tự động biên dịch thư viện shader MLX Metal. Nếu không có nó, suy luận trên GPU chạy chậm hơn ~5 lần do phải biên dịch shader theo kiểu JIT.

Khởi động nhanh: chuyển âm thanh thành văn bản

CLI

# Chuyển một tệp WAV thành văn bản
.build/release/speech transcribe recording.wav

API Swift

import Qwen3ASR

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

Các mô hình được tải tự động từ HuggingFace ở lần dùng đầu tiên và lưu trong ~/Library/Caches/qwen3-speech/.

Khởi động nhanh: văn bản thành giọng nói

CLI

# Tạo giọng nói
.build/release/speech speak "Hello, world!" --output hello.wav

API Swift

import Qwen3TTS

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

Tải mô hình

Tất cả các mô hình đều được tải từ HuggingFace ở lần dùng đầu tiên. Kích thước ước tính:

Mô hìnhKích thướcSử dụng RAM
Qwen3-ASR 0.6B (4-bit)680 MB~2.2 GB đỉnh
Qwen3-ASR 0.6B (8-bit)1.0 GB~2.5 GB đỉnh
Qwen3-ASR 1.7B (4-bit)2.1 GB~4 GB đỉnh
Parakeet-TDT (CoreML INT8)500 MB~600 MB đỉnh
Qwen3-TTS 0.6B (4-bit)1.7 GB~2 GB đỉnh
Qwen3-TTS 1.7B (4-bit)3.2 GB~4 GB đỉnh
CosyVoice3 (4-bit LLM)1.2 GB~1.5 GB đỉnh
Kokoro-82M (CoreML INT8)89 MB~200 MB đỉnh
Qwen3.5-Chat 0.8B (INT4 MLX)418 MB~700 MB đỉnh
Qwen3.5-Chat 0.8B (INT8 CoreML)981 MB~1.2 GB đỉnh
PersonaPlex 7B (8-bit) khuyến nghị9.1 GB~11 GB đỉnh
PersonaPlex 7B (4-bit)4.9 GB~6.5 GB đỉnh
Pyannote VAD5.7 MB~20 MB đỉnh
Silero VAD v51.2 MB~5 MB đỉnh
WeSpeaker ResNet3425 MB~50 MB đỉnh
DeepFilterNet3 (FP16)4.2 MB~10 MB đỉnh

Bước tiếp theo