/chat-with-anyone
Chat with any real person or fictional character in their own voice by automatically finding their speech online, extracting a clean reference sample, and generating audio replies. Also supports generating a matching voice from an uploaded image. Use when the user says
$ npx -y skills add noizai/skills --skill chat-with-anyone --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/chat-with-anyone
Context preview
The summary Claude sees to decide when to auto-load this skill.
Chat with any real person or fictional character in their own voice by automatically finding their speech online, extracting a clean reference sample, and generating audio replies. Also supports generating a matching voice from an uploaded image. Use when the user says
SKILL.md
chat-with-anyone.SKILL.mdname: chat-with-anyone
description: Chat with any real person or fictional character in their own voice by automatically finding their speech online, extracting a clean reference sample, and generating audio replies. Also supports generating a matching voice from an uploaded image. Use when the user says "我想跟xxx聊天", "你来扮演xxx跟我说话", "让xxx给我讲讲这篇文章", "我想跟图片中的人说话", or similar.
permissions:
- network
- filesystem
metadata: {"openclaw": {"primaryEnv": "NOIZ_API_KEY"}}Chat with Anyone
Clone a real person's voice from online video, or design a voice from a photo, then roleplay as that person with TTS.
Important: Ethical Use & Copyright
This skill synthesizes speech that imitates real voices. Before proceeding, the agent **must**:
1. **Never impersonate** someone to deceive, defraud, or harass. 2. **Only use publicly available media** (public speeches, interviews, press conferences) as reference audio. 3. **Inform the user** that generated audio is synthetic and should not be presented as genuine recordings. 4. **Decline requests** that target private individuals who have not consented, or that are clearly intended for deception, harassment, or defamation.
If the user's intent appears harmful, refuse politely and explain why.
Prerequisites
| Dependency | Type | How to verify | |-----------|------|---------------| | `ffmpeg` | System binary | `ffmpeg -version` | | `yt-dlp` | System binary | `yt-dlp --version` | | `tts` skill | Cursor skill | `ls skills/tts/scripts/tts.py` | | `NOIZ_API_KEY` | Env var or file | `python3 skills/tts/scripts/tts.py config --show` |
**Before the first run**, verify all dependencies are present:
ffmpeg -version && yt-dlp --version && ls skills/tts/scripts/tts.py
If `yt-dlp` is missing, install it:
uv pip install yt-dlp
If the Noiz API key is not configured:
python3 skills/tts/scripts/tts.py config --set-api-key YOUR_KEY
Mode Selection
- **User names a person** (real or fictional) --> Workflow A
- **User provides an image**, person is unrecognizable --> Workflow B
- **User provides an image**, person is a recognizable public figure --> Workflow A (real voice is more authentic)
- **Multiple people in image** --> Ask which person first
---
Workflow A: Name-based (voice from online video)
Track progress with this checklist:
- [ ] A1. Disambiguate character
- [ ] A2. Find reference video
- [ ] A3. Download audio + subtitles
- [ ] A4. Extract best reference segment
- [ ] A5. Generate speech
A1. Disambiguate Character
If ambiguous (e.g. "US President", "Spider-Man actor"), ask the user to specify the exact person before proceeding.
A2. Find a Reference Video
Use web search to find a YouTube (or Bilibili) video of the person speaking clearly. Best candidates: interviews, speeches, press conferences. Avoid videos with heavy background music.
Search queries to try:
- `{CHARACTER_NAME} interview` / `{CHARACTER_NAME} 采访`
- `{CHARACTER_NAME} speech` / `{CHARACTER_NAME} 演讲`
- `{CHARACTER_NAME} press conference`
A3. Download Audio and Subtitles
mkdir -p "tmp/chat_with_anyone/{CHARACTER_NAME}"
yt-dlp -x --audio-format mp3 \
--write-subs --write-auto-subs --sub-langs "en,zh-Hans" \
--convert-subs srt \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/%(title)s.%(ext)s" \
"{VIDEO_URL}"After download, list the output directory to identify the audio file and SRT subtitle file:
ls tmp/chat_with_anyone/{CHARACTER_NAME}/Expected output: a `.mp3` audio file and one or more `.srt` subtitle files.
**If no subtitle files appear**: try a different video that has auto-generated captions, or adjust `--sub-langs` for the target language.
A4. Extract Best Reference Segment
Use the automated extraction script — it parses the SRT, finds the densest 3-12 second speech window, and extracts it as a WAV:
python3 skills/chat-with-anyone/scripts/extract_ref_segment.py \
--srt "tmp/chat_with_anyone/{CHARACTER_NAME}/{SRT_FILE}" \
--audio "tmp/chat_with_anyone/{CHARACTER_NAME}/{AUDIO_FILE}" \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/ref.wav"The script prints the selected time range and saves the reference WAV. Verify the output exists and is non-empty before proceeding.
**If the script reports no suitable segment**: try `--min-duration 2` for shorter clips, or download a different video.
A5. Generate Speech and Roleplay
Write a response in character, then synthesize it:
python3 skills/tts/scripts/tts.py \
-t "{RESPONSE_TEXT}" \
--ref-audio "tmp/chat_with_anyone/{CHARACTER_NAME}/ref.wav" \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/reply.wav"Present the generated audio file to the user along with the text. For subsequent messages, reuse the same `--ref-audio` path.
---
Workflow B: Image-based (voice from photo)
Track progress with this checklist:
- [ ] B1. Analyze image
- [ ] B2. Design voice
- [ ] B3. Preview (optional)
- [ ] B4. Generate speech
B1. Analyze the Image
Use your vision capability to examine the image:
1. **If the person is a recognizable public figure** --> switch to Workflow A for authentic voice. 2. **If unrecognizable**, produce a voice description covering:
- Gender (male / female)
- Approximate age (e.g. "around 30 years old")
- Apparent demeanor (e.g. cheerful, authoritative, gentle)
- Contextual cues (e.g. suit --> professional tone; athletic outfit --> energetic)
B2. Design the Voice
Pass both the image and the description to the voice-design script:
python3 skills/chat-with-anyone/scripts/voice_design.py \
--picture "{IMAGE_PATH}" \
--voice-description "{VOICE_DESCRIPTION}" \
-o "tmp/chat_with_anyone/voice_design"The script outputs:
- Detected voice features (printed to stdout)
- Preview audio files in the output directory
- `voice_id.txt` containing the best voice ID
Read the voice ID:
cat tmp/chat_with_anyone/voice_design/voic
Read more
name: chat-with-anyone
description: Chat with any real person or fictional character in their own voice by automatically finding their speech online, extracting a clean reference sample, and generating audio replies. Also supports generating a matching voice from an uploaded image. Use when the user says "我想跟xxx聊天", "你来扮演xxx跟我说话", "让xxx给我讲讲这篇文章", "我想跟图片中的人说话", or similar.
permissions:
- network
- filesystem
metadata: {"openclaw": {"primaryEnv": "NOIZ_API_KEY"}}Chat with Anyone
Clone a real person's voice from online video, or design a voice from a photo, then roleplay as that person with TTS.
Important: Ethical Use & Copyright
This skill synthesizes speech that imitates real voices. Before proceeding, the agent **must**:
1. **Never impersonate** someone to deceive, defraud, or harass. 2. **Only use publicly available media** (public speeches, interviews, press conferences) as reference audio. 3. **Inform the user** that generated audio is synthetic and should not be presented as genuine recordings. 4. **Decline requests** that target private individuals who have not consented, or that are clearly intended for deception, harassment, or defamation.
If the user's intent appears harmful, refuse politely and explain why.
Prerequisites
| Dependency | Type | How to verify | |-----------|------|---------------| | `ffmpeg` | System binary | `ffmpeg -version` | | `yt-dlp` | System binary | `yt-dlp --version` | | `tts` skill | Cursor skill | `ls skills/tts/scripts/tts.py` | | `NOIZ_API_KEY` | Env var or file | `python3 skills/tts/scripts/tts.py config --show` |
**Before the first run**, verify all dependencies are present:
ffmpeg -version && yt-dlp --version && ls skills/tts/scripts/tts.py
If `yt-dlp` is missing, install it:
uv pip install yt-dlp
If the Noiz API key is not configured:
python3 skills/tts/scripts/tts.py config --set-api-key YOUR_KEY
Mode Selection
- **User names a person** (real or fictional) --> Workflow A
- **User provides an image**, person is unrecognizable --> Workflow B
- **User provides an image**, person is a recognizable public figure --> Workflow A (real voice is more authentic)
- **Multiple people in image** --> Ask which person first
---
Workflow A: Name-based (voice from online video)
Track progress with this checklist:
- [ ] A1. Disambiguate character - [ ] A2. Find reference video - [ ] A3. Download audio + subtitles - [ ] A4. Extract best reference segment - [ ] A5. Generate speech
A1. Disambiguate Character
If ambiguous (e.g. "US President", "Spider-Man actor"), ask the user to specify the exact person before proceeding.
A2. Find a Reference Video
Use web search to find a YouTube (or Bilibili) video of the person speaking clearly. Best candidates: interviews, speeches, press conferences. Avoid videos with heavy background music.
Search queries to try:
- `{CHARACTER_NAME} interview` / `{CHARACTER_NAME} 采访`
- `{CHARACTER_NAME} speech` / `{CHARACTER_NAME} 演讲`
- `{CHARACTER_NAME} press conference`
A3. Download Audio and Subtitles
mkdir -p "tmp/chat_with_anyone/{CHARACTER_NAME}"
yt-dlp -x --audio-format mp3 \
--write-subs --write-auto-subs --sub-langs "en,zh-Hans" \
--convert-subs srt \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/%(title)s.%(ext)s" \
"{VIDEO_URL}"After download, list the output directory to identify the audio file and SRT subtitle file:
ls tmp/chat_with_anyone/{CHARACTER_NAME}/Expected output: a `.mp3` audio file and one or more `.srt` subtitle files.
**If no subtitle files appear**: try a different video that has auto-generated captions, or adjust `--sub-langs` for the target language.
A4. Extract Best Reference Segment
Use the automated extraction script — it parses the SRT, finds the densest 3-12 second speech window, and extracts it as a WAV:
python3 skills/chat-with-anyone/scripts/extract_ref_segment.py \
--srt "tmp/chat_with_anyone/{CHARACTER_NAME}/{SRT_FILE}" \
--audio "tmp/chat_with_anyone/{CHARACTER_NAME}/{AUDIO_FILE}" \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/ref.wav"The script prints the selected time range and saves the reference WAV. Verify the output exists and is non-empty before proceeding.
**If the script reports no suitable segment**: try `--min-duration 2` for shorter clips, or download a different video.
A5. Generate Speech and Roleplay
Write a response in character, then synthesize it:
python3 skills/tts/scripts/tts.py \
-t "{RESPONSE_TEXT}" \
--ref-audio "tmp/chat_with_anyone/{CHARACTER_NAME}/ref.wav" \
-o "tmp/chat_with_anyone/{CHARACTER_NAME}/reply.wav"Present the generated audio file to the user along with the text. For subsequent messages, reuse the same `--ref-audio` path.
---
Workflow B: Image-based (voice from photo)
Track progress with this checklist:
- [ ] B1. Analyze image - [ ] B2. Design voice - [ ] B3. Preview (optional) - [ ] B4. Generate speech
B1. Analyze the Image
Use your vision capability to examine the image:
1. **If the person is a recognizable public figure** --> switch to Workflow A for authentic voice. 2. **If unrecognizable**, produce a voice description covering:
- Gender (male / female)
- Approximate age (e.g. "around 30 years old")
- Apparent demeanor (e.g. cheerful, authoritative, gentle)
- Contextual cues (e.g. suit --> professional tone; athletic outfit --> energetic)
B2. Design the Voice
Pass both the image and the description to the voice-design script:
python3 skills/chat-with-anyone/scripts/voice_design.py \
--picture "{IMAGE_PATH}" \
--voice-description "{VOICE_DESCRIPTION}" \
-o "tmp/chat_with_anyone/voice_design"The script outputs:
- Detected voice features (printed to stdout)
- Preview audio files in the output directory
- `voice_id.txt` containing the best voice ID
Read the voice ID:
cat tmp/chat_with_anyone/voice_design/voic
Central repository for managing Skills to "human" vibe-talking.
Other skills on noizai-skills.
- /characteristic-voice
Use this skill whenever the user wants speech to sound more human, companion-like, or emotionally expressive. Triggers include: any mention of 'say like', 'talk like', 'speak like', 'companion voice', 'comfort me', 'cheer me up', 'sound more human', 'good night voice', 'good
Open skill - /daily-news-caster
Fetches the latest news using news-aggregator-skill, formats it into a podcast script in Markdown format, and uses the tts skill to generate a podcast audio file. Use when the user asks to get the latest news and read it out as a podcast.
Open skill - /sound-fx
Use this skill whenever the user wants to generate sound effects, ambient audio, or short audio clips from a text description. Triggers include: any mention of 'sound effect', 'sfx', 'generate sound', 'make a sound', 'audio effect', 'ambient sound', 'foley', 'sound clip',
Open skill - /speech-to-text
Use this skill whenever the user wants to transcribe audio to text, convert speech to text, or get a transcript from an audio or video file. Triggers include: any mention of 'transcribe', 'transcription', 'speech to text', 'STT', 'convert audio to text', 'what does this audio
Open skill - /template-skill
Reusable template for authoring new Agent Skills with clear triggers, workflow, and I/O contracts.
Open skill - /tts
Use this skill whenever the user wants to convert text into speech, generate audio from text, or produce voiceovers. Triggers include: any mention of 'TTS', 'text to speech', 'speak', 'say', 'voice', 'read aloud', 'audio narration', 'voiceover', 'dubbing', or requests to turn
Open skill

