# RAI: ROS 2 speech conversation agent

Consume HRI speech messages and stream configured LLM text responses through the ROS 2 HRI connector.

ID: `rai-examples-s2s-conversational-py`

Record version: `source-7c0d1e4525b1f4ed9e6da067260a8def173ae22f678f884b6a3413dcd847ce78`

Hub commit: `66a13cd6ae8ab828219a4916587fb83d6dc71809`

## Access

Fetch the pinned repository, verify this source checksum, and use upstream installation and invocation. This record does not install or execute code.

Optional inert file retrieval: `python /PATH_TO_SKILL/scripts/rsh.py fetch-source rai-examples-s2s-conversational-py --expected-source-revision b018729833742c6f71e1e9f332ee2b435676fb4f --expected-source-sha256 7c0d1e4525b1f4ed9e6da067260a8def173ae22f678f884b6a3413dcd847ce78 --project ./experiment --json`. This verifies one file, preserves provenance and never installs or runs it. See [source-file retrieval](https://hub.superfastrobotics.com/source-files.md).

Hub preparation adapter: **false**. Runtime verification: **not_run**.

Upstream setup: https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/setup/install.md

## Source and license

- Repository: https://github.com/RobotecAI/rai
- Pinned source: https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/examples/s2s/conversational.py
- Revision: `b018729833742c6f71e1e9f332ee2b435676fb4f`
- Path: `examples/s2s/conversational.py`
- Source SHA256: `7c0d1e4525b1f4ed9e6da067260a8def173ae22f678f884b6a3413dcd847ce78`
- Source bytes: 6269
- Original authors: Robotec.AI (per-file copyright notice)
- License: [Apache-2.0](https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/LICENSE)
- License scope: Selected first-party source and per-file notices; excludes models, dependencies, datasets, simulator assets and external service terms.

License SHA256: `c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4`

## Artifact

```json
{
  "kind": "workflow",
  "format": "python",
  "workflow_role": "human-robot-interaction"
}
```

## Requirements

```json
{
  "python": "Root/core/whoami/perception/semap/s2s use >=3.10,<3.13; standalone finetune uses >=3.10,<3.12. Match sourced ROS distribution Python.",
  "packages": [
    "Pinned RAI checkout",
    "Matching ROS 2 and rai_interfaces",
    "Per-workflow packages, local model or hosted-provider dependencies from pinned setup"
  ],
  "display": "Official setup documents ROS 2 Humble/Jazzy, rai_interfaces and feature-specific environment. Nothing installed or runtime verified.",
  "execution_domain": "computation-or-hardware",
  "source_imports": [
    "argparse",
    "langchain_core.callbacks",
    "langchain_core.messages",
    "logging",
    "queue",
    "rai",
    "rai.agents.base",
    "rai.communication",
    "rai.communication.ros2",
    "rai_interfaces.msg",
    "rclpy",
    "signal",
    "threading",
    "time",
    "typing"
  ],
  "notes": "Upstream per-workflow profile declarations only; provider availability, dependency resolution and runtime/robot compatibility are unverified.",
  "declared_requirements": {
    "agent": {
      "gpu": "No fixed GPU requirement for the Python wrapper. Local model serving has model-specific hardware requirements; hosted APIs move LLM inference to the provider.",
      "external_models": "A configured tool-capable LLM. Vision workflows need a vision-capable model. Pinned config selects OpenAI gpt-4o/gpt-4o-mini by default and declares Ollama, AWS and Google alternatives.",
      "api": "Default hosted OpenAI configuration requires credentials and may incur charges. Other hosted vendors require separate access; local Ollama needs a server and separately obtained model. No calls were made.",
      "evidence_paths": [
        "config.toml",
        "docs/setup/vendors.md",
        "docs/setup/install.md"
      ]
    },
    "speech": {
      "gpu": "LocalWhisper selects CUDA when available and library default otherwise. Kokoro documentation declares CPU default/fallback and optional CUDA 12/cuDNN 9 setup. No capacity or throughput guarantee.",
      "external_models": "Selected Whisper, Silero VAD, OpenWakeWord or Kokoro ONNX assets. Upstream initialization can obtain assets; none were downloaded. OpenTTS requires an external server.",
      "api": "Selected ASR example uses local Whisper and TTS example local Kokoro. Other supported speech providers include hosted OpenAI/ElevenLabs with credentials; use of those providers is not implied by these examples.",
      "evidence_paths": [
        "src/rai_s2s/README.md",
        "src/rai_s2s/pyproject.toml",
        "src/rai_s2s/rai_s2s/asr/models/local_whisper.py",
        "src/rai_s2s/rai_s2s/tts/models/kokoro_tts.py"
      ]
    }
  }
}
```

## Invocation

```json
{
  "entrypoint": "python examples/s2s/conversational.py",
  "notes": "Source/setup invocation shape only; not executed or runtime verified. Source references only; no Hub adapter, compatibility promise, provider access grant or runtime result. Known limits: Source labels this temporary reference agent code. Embedded system prompt is inert source data, not a census instruction. ASR/TTS processes and audio devices are separate when speech input/output is wanted."
}
```

## Compatibility

```json
[]
```

Missing environment fields remain unknown. Source discovery labels do not establish robot compatibility.

## Evidence

Level: **source_reviewed**. Runtime verification: **not_run**.

Verified exact source, applicable license and author/setup document bytes at a full Git commit; parsed the Python AST and reviewed this guarded operational entrypoint and its explicit license notices. No upstream code, installation, robot command, dataset, mesh or checkpoint was executed or loaded.

Source review and contributor reports do not establish task completion. Preserve upstream attribution and licenses.
