البدء

Soniqo Cloud

تفضّل واجهة API مُستضافة؟ نفس التفريغ والتوليف والاستنساخ كخدمة مُدارة — متوافقة مع OpenAI وElevenLabs. soniqo.audio/cloud →

ثبّت أداة سطر الأوامر speech لتفريغ الصوت وإنشائه على جهاز Mac بمعالج Apple Silicon. استخدم Swift SDK لإضافة معالجة الكلام إلى تطبيقات macOS وiOS.

متطلبات أداة سطر الأوامر

تثبيت أداة سطر الأوامر

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

تشغيل واجهة كلام محلية

شغّل خادم 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"),
        // ... add any modules you need
    ]
)

الوحدات المتاحة

الوحدةالوصف
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)
SpeechVADVAD (Silero + Pyannote)، تقسيم حسب المتحدّث، تضمينات المتحدّث
SpeechEnhancementكبح الضوضاء (DeepFilterNet3، CoreML)
AudioCommonبروتوكولات مشتركة، إدخال/إخراج الصوت، أداة تنزيل من 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+. استنسخ المستودع وابنِ أداة سطر الأوامر، ثم تحقّق من الملف التنفيذي داخل مجلد العمل:

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
مهم

تُجمِّع make build مكتبة شيدرات MLX Metal تلقائيًا. بدونها، يصبح الاستدلال على GPU أبطأ بنحو 5x بسبب تجميع الشيدرات أثناء التشغيل (JIT).

يستهدف بناء المظللات افتراضيًا macOS 15.0 وMetal 3.2، حتى مع SDK أحدث. يمكن تغيير القيم عبر MACOSX_DEPLOYMENT_TARGET وMLX_METAL_LANGUAGE_VERSION للبناء المخصص؛ وقد تستبعد الإصدارات المستهدفة الأعلى الأنظمة القديمة. تُبطل تغييرات المترجم أو SDK أو الخيارات أو البرنامج النصي أو المصادر ذاكرة التخزين المؤقت. عند فشل الترجمة أو الربط، تُحفظ المكتبة السابقة وبصمة ذاكرة التخزين المؤقت.

تنزيلات النماذج

تُنزَّل النماذج تلقائيًا من HuggingFace عند أوّل استخدام، وتُخزَّن في ~/Library/Caches/qwen3-speech/.

تُنزَّل جميع النماذج من HuggingFace عند أوّل استخدام. أحجام تقريبية:

النموذجالحجماستهلاك الذاكرة
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 في الذروة
Qwen3-TTS 1.7B (4-bit)3.2 GB~4 GB في الذروة
CosyVoice3 (4-bit 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-bit) موصى به9.1 GB~11 GB في الذروة
PersonaPlex 7B (4-bit)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 في الذروة

الخطوات التالية