Bắt đầu

Soniqo Cloud

Muốn dùng API được quản lý? Cùng khả năng chuyển văn bản, tổng hợp và nhân bản dưới dạng dịch vụ — tương thích OpenAI và ElevenLabs. soniqo.audio/cloud →

Cài CLI speech để chuyển âm thanh thành văn bản và tạo giọng nói trên máy Mac dùng Apple Silicon. Dùng Swift SDK để thêm tính năng xử lý giọng nói vào ứng dụng macOS và iOS.

Yêu cầu của CLI

Cài đặt CLI

Homebrew (CLI)

Dùng Homebrew bản ARM gốc (/opt/homebrew) để cài speech và máy chủ HTTP/WebSocket speech-server.

brew install speech
speech --help

Tác vụ đầu tiên: chuyển tệp M4A thành văn bản

Tải bản ghi âm mẫu, rồi chuyển thành văn bản trong terminal:

Kết nối internet khi chạy lần đầu. Mô hình đã chọn sẽ được tải từ HuggingFace và lưu trong bộ nhớ đệm trên máy Mac. Sau khi thiết lập, bạn có thể dùng mô hình đó để xử lý bản ghi âm cục bộ mà không cần internet.

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

Xem tiếp hướng dẫn chuyển M4A thành văn bản.

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

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

Chạy API giọng nói cục bộ

Khởi động máy chủ HTTP/WebSocket để xử lý các yêu cầu API cục bộ:

speech-server --port 8080

Swift SDK

Thêm các mô-đun Swift vào ứng dụng macOS 15+ hoặc iOS 18+ bằng Swift Package Manager.

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", branch: "main")
]

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)
WhisperASRchuyển giọng nói thành văn bản (Whisper Large-v3 Turbo, CoreML)
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

Chuyển âm thanh thành văn bản bằng 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)

Tạo giọng nói bằng 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"))

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

Để biên dịch từ mã nguồn, hãy cài Xcode 16.3+ có Metal Toolchain và Swift 6+. Sao chép kho mã, biên dịch CLI, rồi kiểm tra tệp thực thi trong thư mục mã nguồn:

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
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.

Shader mặc định được biên dịch cho macOS 15.0 và Metal 3.2, ngay cả với SDK mới hơn. Với bản dựng tùy chỉnh, MACOSX_DEPLOYMENT_TARGET và MLX_METAL_LANGUAGE_VERSION thay đổi các giá trị này; phiên bản đích cao hơn có thể không hỗ trợ hệ thống cũ. Thay đổi trình biên dịch, SDK, cờ, tập lệnh hoặc mã nguồn sẽ làm mất hiệu lực bộ nhớ đệm. Khi biên dịch hoặc liên kết thất bại, thư viện và mã băm bộ nhớ đệm trước đó được giữ nguyên.

Tải mô hình

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/.

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 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 đỉ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