---
read_when:
    - پیاده‌سازی حالت گفتگو در macOS/iOS/Android
    - تغییر رفتار صدا/TTS/وقفه
summary: 'حالت گفت‌وگو: مکالمه‌های گفتاری پیوسته با ارائه‌دهندگان TTS پیکربندی‌شده'
title: حالت گفت‌وگو
x-i18n:
    generated_at: "2026-04-29T23:08:55Z"
    model: gpt-5.5
    provider: openai
    source_hash: afdddaa81c0a09076eaeeafd25295b0c02681f03b273ec4afe4ea2afa692dc2a
    source_path: nodes/talk.md
    workflow: 16
---

حالت گفت‌وگو یک حلقهٔ پیوستهٔ مکالمهٔ صوتی است:

1. گوش دادن به گفتار
2. ارسال رونوشت به مدل (نشست اصلی، chat.send)
3. انتظار برای پاسخ
4. پخش آن از طریق ارائه‌دهندهٔ پیکربندی‌شدهٔ گفت‌وگو (`talk.speak`)

## رفتار (macOS)

- **هم‌پوشانی همیشه‌فعال** تا زمانی که حالت گفت‌وگو فعال باشد.
- گذارهای مرحله‌ای **در حال گوش دادن → در حال فکر کردن → در حال صحبت کردن**.
- هنگام یک **مکث کوتاه** (پنجرهٔ سکوت)، رونوشت فعلی ارسال می‌شود.
- پاسخ‌ها در **WebChat نوشته می‌شوند** (مانند تایپ کردن).
- **قطع هنگام گفتار** (به‌صورت پیش‌فرض فعال): اگر کاربر هنگام صحبت کردن دستیار شروع به صحبت کند، پخش را متوقف می‌کنیم و زمان قطع را برای پرامپت بعدی ثبت می‌کنیم.

## دستورالعمل‌های صوتی در پاسخ‌ها

دستیار می‌تواند پاسخ خود را با یک **خط JSON واحد** برای کنترل صدا آغاز کند:

```json
{ "voice": "<voice-id>", "once": true }
```

قوانین:

- فقط نخستین خط غیرخالی.
- کلیدهای ناشناخته نادیده گرفته می‌شوند.
- `once: true` فقط روی پاسخ فعلی اعمال می‌شود.
- بدون `once`، صدا به پیش‌فرض جدید برای حالت گفت‌وگو تبدیل می‌شود.
- خط JSON پیش از پخش TTS حذف می‌شود.

کلیدهای پشتیبانی‌شده:

- `voice` / `voice_id` / `voiceId`
- `model` / `model_id` / `modelId`
- `speed`, `rate` (WPM), `stability`, `similarity`, `style`, `speakerBoost`
- `seed`, `normalize`, `lang`, `output_format`, `latency_tier`
- `once`

## پیکربندی (`~/.openclaw/openclaw.json`)

```json5
{
  talk: {
    provider: "elevenlabs",
    providers: {
      elevenlabs: {
        voiceId: "elevenlabs_voice_id",
        modelId: "eleven_v3",
        outputFormat: "mp3_44100_128",
        apiKey: "elevenlabs_api_key",
      },
      mlx: {
        modelId: "mlx-community/Soprano-80M-bf16",
      },
      system: {},
    },
    speechLocale: "ru-RU",
    silenceTimeoutMs: 1500,
    interruptOnSpeech: true,
  },
}
```

پیش‌فرض‌ها:

- `interruptOnSpeech`: true
- `silenceTimeoutMs`: وقتی تنظیم نشده باشد، گفت‌وگو پیش از ارسال رونوشت، پنجرهٔ مکث پیش‌فرض پلتفرم را حفظ می‌کند (`700 ms on macOS and Android, 900 ms on iOS`)
- `provider`: ارائه‌دهندهٔ فعال گفت‌وگو را انتخاب می‌کند. برای مسیرهای پخش محلی macOS از `elevenlabs`، `mlx` یا `system` استفاده کنید.
- `providers.<provider>.voiceId`: برای ElevenLabs به `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` بازمی‌گردد (یا هنگام در دسترس بودن کلید API، نخستین صدای ElevenLabs).
- `providers.elevenlabs.modelId`: وقتی تنظیم نشده باشد، پیش‌فرض آن `eleven_v3` است.
- `providers.mlx.modelId`: وقتی تنظیم نشده باشد، پیش‌فرض آن `mlx-community/Soprano-80M-bf16` است.
- `providers.elevenlabs.apiKey`: به `ELEVENLABS_API_KEY` بازمی‌گردد (یا در صورت در دسترس بودن، پروفایل شل Gateway).
- `speechLocale`: شناسهٔ محلی اختیاری BCP 47 برای تشخیص گفتار روی‌دستگاه در حالت گفت‌وگو در iOS/macOS. برای استفاده از پیش‌فرض دستگاه، آن را تنظیم‌نشده بگذارید.
- `outputFormat`: در macOS/iOS به‌صورت پیش‌فرض `pcm_44100` و در Android به‌صورت پیش‌فرض `pcm_24000` است (برای اجبار پخش جریانی MP3، `mp3_*` را تنظیم کنید)

## رابط کاربری macOS

- کلید تغییر وضعیت نوار منو: **گفت‌وگو**
- زبانهٔ پیکربندی: گروه **حالت گفت‌وگو** (شناسهٔ صدا + کلید تغییر وضعیت قطع)
- هم‌پوشانی:
  - **در حال گوش دادن**: ابر با سطح میکروفون می‌تپد
  - **در حال فکر کردن**: پویانمایی فرورونده
  - **در حال صحبت کردن**: حلقه‌های تابشی
  - کلیک روی ابر: توقف صحبت کردن
  - کلیک روی X: خروج از حالت گفت‌وگو

## رابط کاربری Android

- کلید تغییر وضعیت زبانهٔ صدا: **گفت‌وگو**
- **میکروفون** و **گفت‌وگو** دستی، حالت‌های ضبط زمان‌اجرای ناسازگار با هم هستند.
- میکروفون دستی وقتی برنامه از پیش‌زمینه خارج شود یا کاربر زبانهٔ صدا را ترک کند، متوقف می‌شود.
- حالت گفت‌وگو تا زمان خاموش شدن با کلید تغییر وضعیت یا قطع اتصال گره Android به کار ادامه می‌دهد و هنگام فعال بودن از نوع سرویس پیش‌زمینهٔ میکروفون Android استفاده می‌کند.

## یادداشت‌ها

- به مجوزهای گفتار + میکروفون نیاز دارد.
- از `chat.send` با کلید نشست `main` استفاده می‌کند.
- Gateway پخش گفت‌وگو را از طریق `talk.speak` و با استفاده از ارائه‌دهندهٔ فعال گفت‌وگو resolve می‌کند. Android فقط وقتی آن RPC در دسترس نباشد، به TTS محلی سیستم بازمی‌گردد.
- پخش محلی MLX در macOS هنگام وجود، از کمک‌کنندهٔ همراه `openclaw-mlx-tts` استفاده می‌کند، یا از یک فایل اجرایی روی `PATH`. در زمان توسعه، `OPENCLAW_MLX_TTS_BIN` را تنظیم کنید تا به یک باینری کمک‌کنندهٔ سفارشی اشاره کند.
- `stability` برای `eleven_v3` به `0.0`، `0.5` یا `1.0` اعتبارسنجی می‌شود؛ مدل‌های دیگر `0..1` را می‌پذیرند.
- `latency_tier` هنگام تنظیم شدن به `0..4` اعتبارسنجی می‌شود.
- Android از قالب‌های خروجی `pcm_16000`، `pcm_22050`، `pcm_24000` و `pcm_44100` برای پخش جریانی AudioTrack با تأخیر کم پشتیبانی می‌کند.

## مرتبط

- [بیدارباش صوتی](/fa/nodes/voicewake)
- [صدا و یادداشت‌های صوتی](/fa/nodes/audio)
- [درک رسانه](/fa/nodes/media-understanding)
