خادم MCP لتحويل النص إلى كلام: تحويل محلي للنص إلى صوت من أجل Claude باستخدام Kokoro

ابنِ خادم MCP لتحويل النص إلى كلام يمنح Claude صوتًا خاصًا يعمل على حاسوبك. تعرّف على آلية عمل نموذج Kokoro ذي 82 مليون معامل، واحصل على خادم Python من 60 سطرًا، واربطه مع Claude Desktop وClaude Code، وقارنه بالأصوات المستضافة.

خادم MCP لتحويل النص إلى كلام: تحويل محلي للنص إلى صوت من أجل Claude باستخدام Kokoro
Cristian Da Conceicao
مؤسس Picasso IA

يستطيع Claude كتابة مسودة مقال من 2000 كلمة في أقل من دقيقة، ثم تقضي عشر دقائق في تدقيق النظر إليها. يسدّ خادم MCP لتحويل النص إلى كلام هذه الفجوة. يستدعي Claude أداة، فيحوّل نموذج صوتي صغير على جهازك النص إلى صوت، ويُشغَّل الناتج عبر مكبرات الصوت قبل أن يبرد فنجان قهوتك.

Kokoro هو النموذج الذي يجعل هذا عمليًا. يضم 82 مليون معامل فقط، ويُوزَّع بموجب ترخيص Apache 2.0، ويُنتج كلامًا بتردد 24 كيلوهرتز يصمد أمام أنظمة أكبر بكثير. لا توجد فاتورة API، ولا رفع لمسوداتك إلى طرف ثالث، ولا حد لمعدل الاستخدام. يُظهر هذا المقال كيف تترابط الأجزاء، ويقدّم لك خادم Python يعمل في نحو 60 سطرًا، ويربطه بـ Claude Desktop وClaude Code، ثم ينظر بصراحة إلى الحالات التي يكون فيها الصوت المستضاف هو الخيار الأفضل.

أيدٍ لمطوّر تكتب على مكتب مع مكبر صوت استوديو قريب

لماذا تشغّل تحويل النص إلى كلام محليًا

تبدو الأصوات السحابية رائعة، لكنها تأتي بشروط. كل طلب يغادر جهازك، وكل حرف يُحتسب عليك، وكل عطل في الخدمة يصبح عطلًا لديك أنت. يقلب الخادم المحلي كل هذه النقاط.

الخصوصية دون جهد إضافي

عندما يقرأ Claude بصوت عالٍ مسودة عقد، أو مدخل يومياتك الخاصة، أو مواصفات منتج لم يُطلق بعد، يمر النص عبر خادم MCP الخاص بك ولا يمر عبر غيره. يشغّل Kokoro النموذج على معالج CPU أو GPU لديك، ويكتب ملف WAV على القرص، ويتوقف المسار عند هذا الحد. تحفّظ صادق واحد: لا يزال Claude نفسه يتلقى كل ما تكتبه، لذا فإن كلمة "محلي" تصف خطوة الصوت وليس المحادثة كلها.

قفل نحاسي موضوع على حاسوب محمول مغلق، رمزًا للمعالجة المحلية الخاصة

التكلفة والعمل دون اتصال

تفرض واجهات API الصوتية المستضافة عادةً رسومًا لكل حرف أو لكل دقيقة. وهذا مقبول لمقدمة بودكاست، لكنه مرهق لوكيل يقرأ كل إجابة بصوت طوال اليوم. بعد تنزيل أوزان Kokoro، تكلّف الجملة الإضافية بضع ثوانٍ من الكهرباء فقط. المستندات الطويلة، وإعادة التسجيل المتكررة، وتجربة أصوات مختلفة، كلها تكلّف الشيء نفسه: لا شيء.

يحمّل التشغيل الأول النموذج من Hugging Face. بعد ذلك يعمل الخادم في الطائرة، أو في قبو، أو خلف جدار حماية لشركة. يعتمد زمن الاستجابة على عتادك لا على رحلة ذهابًا وإيابًا عبر الشبكة، لذا يبقى السلوك ثابتًا عند الثالثة فجرًا والثالثة عصرًا.

ما هو Kokoro فعليًا

الحجم والترخيص والتدريب

Kokoro-82M نموذج تحويل نص إلى كلام بأوزان مفتوحة، مبني على بنية StyleTTS 2 مع مُولّد صوتي ISTFTNet. صدر الإصدار 1.0 في 27 يناير 2025، بعد إصدار سابق في 25 ديسمبر 2024. دُرِّب المؤلفون على بضع مئات من ساعات الصوت المرخّص بشروط تساهلية والصوت الاصطناعي، ولهذا يتناسب ترخيص Apache 2.0 بسهولة مع المشاريع التجارية.

المواصفةالقيمة
المعاملات82 مليون
الترخيصApache 2.0
معدل العينات الخارجة24 كيلوهرتز
البنيةStyleTTS 2 مع مُشفّر ISTFTNet الصوتي
الأصوات في الإصدار 1.054
اللغات في الإصدار 1.08
اعتماد النظامespeak-ng

💡 الصغر لا يعني الضعف. حجم Kokoro هو ما يتيح له العمل على حاسوب محمول. في السرد العادي للنثر الإنجليزي يصعب تمييزه عن كثير من الأصوات المدفوعة عند الاستماع العابر. تظهر الفجوة في التعبير عند الطلب، مثل الهمس أو الضحك، حيث تتقدم النماذج المستضافة الأكبر حجمًا.

اللغات ورموز الأصوات

تتبع أسماء الأصوات نمطًا: الحرف الأول يمثّل اللغة أو اللهجة، والحرف الثاني يمثّل الجنس. تمثّل af_heart صوتًا أنثويًا بالإنجليزية الأمريكية، وbm_george صوتًا ذكريًا بالإنجليزية البريطانية. يحتاج المسار أيضًا إلى lang_code مطابق لكي يُحوَّل النص إلى الفونيمات بشكل صحيح.

مكتب عليه خريطة للعالم، ودفتر مفردات، وسماعات أذن

الرمزاللغةأمثلة على الأصوات
aالإنجليزية الأمريكيةaf_heart، am_michael
bالإنجليزية البريطانيةbf_emma، bm_george
eالإسبانيةef_dora
fالفرنسيةff_siwis
hالهنديةhf_alpha
iالإيطاليةif_sara
jاليابانيةjf_alpha
pالبرتغالية البرازيليةpf_dora
zالصينية الماندرينيةzf_xiaobei

تُحتسب الإنجليزية الأمريكية والبريطانية لغةً واحدة ضمن رقم "8 لغات". وتسحب اليابانية والماندرينية حزمًا إضافية من عائلة misaki، لذا اقرأ ملف README الخاص بالمشروع قبل تفعيلهما.

كيف يعمل خادم MCP

الأجزاء المتحركة الثلاثة

يتكون الإعداد من ثلاثة أجزاء فقط، ولكل جزء مهمة محددة:

  1. العميل. يتحدث Claude Desktop أو Claude Code بروتوكول Model Context Protocol ويقرر متى تستحق أداة ما الاستدعاء.
  2. الخادم. عملية Python صغيرة يشغّلها العميل عبر stdio. يعرض عددًا قليلًا من الأدوات ولا شيء غيرها.
  3. Kokoro. يُحمَّل مرة واحدة في الذاكرة داخل تلك العملية، فتتجاوز الاستدعاءات اللاحقة بطء البدء.

التدفق قصير. يقرر Claude استدعاء speak، ويرسل النص مع اسم الصوت، فيولّد الخادم الصوت ويشغّله، ويعيد مسار الملف كنص عادي كي يخبرك Claude بمكان حفظ التسجيل.

رف خادم منزلي صغير مع خادم صغير وكابلات مرتبة بعناية

خوادم جاهزة تستحق التجربة

لست مضطرًا لكتابة كل شيء بنفسك. تغلّف عدة مشاريع مجتمعية Kokoro لبروتوكول MCP:

  • يقدم kristofferv98/MCP_tts_server أكثر من محرك لتحويل النص إلى كلام، من بينها Kokoro، مع تشغيل متدفق.
  • يشغّل kokoro-tts-mcp من scottschram نموذج Kokoro-82M مع تسريع MLX على معالجات Apple Silicon.
  • يمثل koroko-speech-mcp من hammeiam خادمًا صوتيًا مدمجًا مبنيًا حول Kokoro.

الخوادم الجاهزة توفّر عليك فترة بعد الظهر كاملة. أما كتابة خادمك الخاص، كما في الأسفل، فتستغرق نحو ساعة وتمنحك تحكمًا كاملًا في تنظيف النص، وإعدادات الأصوات الافتراضية، والمكان الذي تُحفظ فيه الملفات.

ابنِ الخادم خطوة بخطوة

تثبيت المتطلبات

استخدم بيئة افتراضية حتى تبقى حزم PyTorch بعيدة عن Python الخاص بالنظام. الخيار الآمن هو Python 3.10 أو 3.11 أو 3.12.

python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install "kokoro>=0.9.2" soundfile sounddevice numpy "mcp[cli]"

يحتاج Kokoro أيضًا إلى محلّل الفونيمات espeak-ng على نظامك:

  • macOS: brew install espeak-ng
  • Debian أو Ubuntu: sudo apt-get install espeak-ng
  • Windows: ثبّت حزمة إصدار espeak-ng، ثم افتح طرفية جديدة

حاسوب صغير أسود على مكتب خشبي مرتب مع مكبر صوت ودفتر

كتابة ملف الخادم

احفظ هذا الملف باسم kokoro_server.py. يعرض أداتين، ويحمّل مسار الإنجليزية عند بدء التشغيل، ويزيل تنسيق markdown من النص، ويشغّل الصوت دون أن يحجب Claude.

import os
import re
import time
from pathlib import Path

import numpy as np
import sounddevice as sd
import soundfile as sf
from kokoro import KPipeline
from mcp.server.fastmcp import FastMCP

SAMPLE_RATE = 24000
OUT_DIR = Path(os.environ.get("KOKORO_OUT", Path.home() / "kokoro_audio"))
OUT_DIR.mkdir(parents=True, exist_ok=True)

mcp = FastMCP("kokoro-tts")
pipelines = {}


def get_pipeline(lang_code: str) -> KPipeline:
    if lang_code not in pipelines:
        pipelines[lang_code] = KPipeline(lang_code=lang_code)
    return pipelines[lang_code]


def clean_text(text: str) -> str:
    text = re.sub(r"`{3}.*?`{3}", " code block omitted. ", text, flags=re.S)
    text = re.sub(r"https?://\S+", "link", text)
    text = re.sub(r"[#*_`>]+", "", text)
    return re.sub(r"[ \t]+", " ", text).strip()


@mcp.tool()
def speak(text: str, voice: str = "af_heart", speed: float = 1.0,
          lang_code: str = "a", play: bool = True) -> str:
    """Read text aloud with Kokoro. Returns the path of the saved WAV file."""
    pipeline = get_pipeline(lang_code)
    parts = []
    for _, _, audio in pipeline(clean_text(text), voice=voice, speed=speed):
        if audio is not None:
            parts.append(audio.detach().cpu().numpy())
    if not parts:
        return "No audio was produced. Check the text and the voice name."
    wave = np.concatenate(parts)
    path = OUT_DIR / f"speech_{time.strftime('%Y%m%d_%H%M%S')}.wav"
    sf.write(path, wave, SAMPLE_RATE)
    if play:
        sd.play(wave, SAMPLE_RATE)
    return f"Saved {len(wave) / SAMPLE_RATE:.1f}s of audio to {path}"


@mcp.tool()
def list_voices() -> str:
    """List a few Kokoro voices and the lang_code each one needs."""
    return (
        "a: af_heart, af_bella, am_michael | b: bf_emma, bm_george | "
        "e: ef_dora | f: ff_siwis | j: jf_alpha"
    )


if __name__ == "__main__":
    get_pipeline("a")
    mcp.run()

ثلاثة خيارات تصميمية مهمة هنا. تُخزَّن المسارات مؤقتًا لكل لغة، فالتبديل بين الإنجليزية والإسبانية لا يعيد تحميل أي شيء مرتين. يستخدم التشغيل sd.play، الذي يعود فورًا، فلا ينتظر Claude انتهاء الصوت أبدًا. ولا يستدعي الملف print إطلاقًا، لأن stdout في خادم stdio ملك للبروتوكول. أي طباعة عشوائية تُفسد تدفق الرسائل.

تسجيله في Claude

في Claude Desktop، افتح claude_desktop_config.json. على macOS يقع في ~/Library/Application Support/Claude/، وعلى Windows في %APPDATA%\Claude\. وجّه الأمر إلى المفسّر داخل بيئتك الافتراضية، لا إلى python مجرد.

{
  "mcpServers": {
    "kokoro-tts": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["/absolute/path/to/kokoro_server.py"]
    }
  }
}

في Claude Code، يؤدي أمر واحد المهمة نفسها:

claude mcp add kokoro-tts -- /absolute/path/to/.venv/bin/python /absolute/path/to/kokoro_server.py

أعد تشغيل العميل، ثم اختبره بجملة بسيطة: "استخدم أداة speak لتقول مرحبًا بصوت bm_george." إن سمعت رجلًا بريطانيًا يحييك، فالسلسلة كلها تعمل.

اجعل Claude يتحدث بطبيعية

اكتب للأذن

النص الذي يبدو جيدًا على الشاشة يبدو غالبًا ثقيلًا عند قراءته بصوت عالٍ. أعطِ Claude تعليمة دائمة كي يكتب للاستماع منذ المسودة الأولى:

عندما أطلب منك قراءة شيء بصوت عالٍ، استدعِ أداة speak. اكتب للأذن: جمل قصيرة، دون رموز نقطية، دون روابط، واكتب الأرقام أو الاختصارات كلمات كاملة عندما يصعب نطقها.

تمثل الدالة clean_text في الخادم شبكة الأمان لديك، لكنها لا تستطيع إنقاذ جملة تفتقر إلى وقفات طبيعية. تحسّن بعض العادات المخرجات فورًا:

  • قسّم المقاطع الطويلة إلى فقرات. يقطع المسار النص عند فواصل الأسطر افتراضيًا، وهذا يبقي كل جزء قصيرًا ويحافظ على إيقاع ثابت.
  • أعد كتابة الأسماء الصعبة صوتيًا. إذا خرج اسم علامة تجارية بشكل خاطئ، فاكتبه كما يُنطق.
  • أبقِ السرعة بين 0.9 و1.1. خارج هذا النطاق يبدو الكلام مستعجلًا أو بطيئًا.

ميكروفون احترافي على ذراع دعم في ركن تسجيل منزلي صغير

أين تفيد الأداة الصوتية دون استخدام اليدين

تكسب أداة الصوت مكانها في اللحظات التي تكون فيها عيناك أو يداك مشغولتين:

  • الطهي. اطلب من Claude تعديل وصفة لستة أشخاص، واقرأ الخطوات بصوت عالٍ بينما يغطي الدقيق أصابعك.
  • التدقيق اللغوي. سماع المسودة يكشف الإيقاع المتعثر والكلمات المكررة التي تفوت عينيك.
  • التنقل والمشي. اطلب ملخصًا منطوقًا لملاحظات أمس أو لسلسلة طويلة قبل أن تجلس.
  • إمكانية الوصول. يمكن للمخرجات المنطوقة أن تساعد الأشخاص ذوي ضعف البصر أو صعوبات القراءة على التعامل مع النصوص الطويلة بارتياح أكبر.

امرأة تقطع الخضروات في مطبخ مشمس بينما يعمل مكبر صوت

رجل مسنّ يرتدي سماعات ويستمع مغمض العينين في كرسي بذراعين

السرعة والعتاد وإصلاح الأعطال الشائعة

ما يمكن توقعه على جهازك

يعمل Kokoro على معالج CPU في حاسوب محمول عادي، وتسرّعه GPU أو معالجات Apple Silicon أكثر. بدلًا من الوثوق بقياس شخص آخر، شغّل اختبارك الخاص: أرسل فقرة من 200 كلمة وقارن زمن التصيير بزمن التشغيل. إذا انتهى التصيير أولًا، فلديك هامش للعمل في الوقت الفعلي، وستبدو الوثائق الطويلة فورية.

عادتان تبقيان التجربة سلسة. حمّل المسار عند البدء، كما يفعل الخادم أعلاه، لأن أول تركيب صوتي هو الأبطأ دائمًا. وأبقِ النموذج محمّلًا في الذاكرة: يُبقي عميل MCP عملية الخادم حيّة بين الاستدعاءات، فتظل الأوزان في الذاكرة.

💡 نصيحة: شغّل الخادم مرة من الطرفية قبل تسجيله. أي اعتماد مفقود سيظهر كخطأ Python واضح بدلًا من رسالة "فشل الخادم" الغامضة داخل العميل.

خمس مشكلات وحلولها

العرضالسبب المحتملالحل
يُبلغ العميل بفشل بدء الخادمالإعداد يشير إلى Python خاطئاستخدم المسار المطلق لمفسّر البيئة الافتراضية
يتوقف استدعاء الأداة ثم يظهر خطأاستدعاء print كتب إلى stdoutأزل الطباعة وسجّل الأخطاء في stderr بدلًا من ذلك
خطأ في الفونيمات أو espeakespeak-ng غير موجود في PATHثبّته، ثم افتح طرفية جديدة
حُفظ الملف دون صوتمشكلة في جهاز إخراج الصوت أو PortAudioثبّت PortAudio على Linux، أو اختر جهازًا في sounddevice
تُنطق الأسماء بشكل غريبمحلّل الفونيمات خمّن خطأًأعد كتابة الاسم كما يُنطق

امرأة شابة في مقهى تضع سماعات بجانب حاسوب محمول مفتوح

Kokoro المحلي مقابل الأصوات المستضافة

المحلي ليس الإجابة دائمًا. Kokoro ممتاز لسرد خاص قابل للتكرار ومجاني، لكن بعض المهام تحتاج أكثر مما تقدمه 54 صوتًا.

متى تتفوق الأصوات المستضافة

اتجه إلى نموذج مستضاف عندما تحتاج إلى استنساخ الصوت، أو دعم واسع للغات، أو تحكمًا عاطفيًا دقيقًا. تضم مجموعة تحويل النص إلى كلام على Picasso IA خيارات كثيرة، وكلها على بعد نقرة واحدة:

العاملKokoro المحليالأصوات المستضافة
التكلفة لكل جملةالكهرباء فقطبالاستهلاك أو حسب الخطة
يغادر النص جهازكلا (خطوة الصوت)نعم
وقت الإعدادنحو ساعةدقائق
استنساخ الصوتلانعم، في عدة نماذج
نطاق اللغات8 لغاتحتى أكثر من 70 لغة في بعض النماذج
يعمل دون اتصالنعملا

تقسيم معقول: استخدم Kokoro للقراءة اليومية والمسودات وكل ما هو خاص، وانتقل إلى صوت مستضاف للنسخة النهائية لفيديو أو بودكاست أو عرض منتج.

الاقتران بنموذج لغوي

يتحدث الخادم فقط. وما يقوله يعتمد على النموذج الذي يكتب الكلمات. للمسودات الطويلة وإعادة الصياغة الدقيقة، يُعد Claude Sonnet 5 وClaude Opus 4.7 خيارين قويين، بينما يُبقي Claude 4.5 Haiku الإجابات المنطوقة السريعة موجزة وحيوية. طابق النموذج مع المهمة، ثم دع Kokoro يتولى الأداء الصوتي.

دورك الآن: أنشئ مع Picasso IA

صار لديك الآن صوت خاص يعمل مع Claude لا يكلّفك شيئًا لكل جملة. الخطوة التالية هي منح مشاريعك وجهًا. في اليوم نفسه الذي تنتهي فيه من هذا الخادم، يمكنك إنشاء الصور المصغّرة وصور رؤوس المقالات ولوحات المشاهد على Picasso IA لتصاحب الصوت الذي أنتجته.

جرّب Seedream 4.5 للمشاهد الواقعية كالصور الفوتوغرافية، أو Flux 2 Pro عندما تريد تفاصيل حادة وتكوينًا نظيفًا. وعندما يحتاج مشروعك إلى صوت استوديو، جرّب Speech 2.8 HD إلى جانب إعداد Kokoro المحلي، وقارن النتائج بأذنك.

افتح Picasso IA، واكتب أمرًا نصيًا واحدًا، وشاهد ما تحصل عليه. ثم جرّب أمرًا ثانيًا بزاوية كاميرا مختلفة. جرّب بحرية، فأفضل الأوامر النصية تأتي من التجربة والاستماع والتعديل.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة