# Voice Text To Meme

> 根据输入法语音识别文本或润色后文本生成单张表情包图片。适用于用户想把一句话做成聊天可发送的表情包、meme 图、带字梗图或贴纸图时。支持原始语音文本和润色后文本两种输入，默认优先使用润色后文本；自动根据文本语气判断风格；默认直接生成带字图片，也支持生成无字图并同时给出配文模板；使用 doubao-seedream-4-5-251128 作为默认图片模型。

- Skill: `dvcrn/voice-text-to-meme` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add dvcrn/voice-text-to-meme`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/voice-text-to-meme/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/voice-text-to-meme

---


# 语音文本转表情包

## 概述
此 Skill 用于把输入法侧已经拿到的语音文本，转换成一张适合聊天发送的表情包图片。

默认处理目标：
- 输入可以是原始语音识别文本，也可以是已经润色后的文本。
- 默认优先使用润色后文本；如果没有润色后文本，则退回原始文本。
- 自动判断文本语气和意图，选择更合适的表情包风格。
- 默认生成一张直接带字的表情包图片。
- 如果用户明确要求，或判断带字图风险较高，也支持“生成无字图 + 单独给出上/下字幕文案模板”。

## 工作流
按以下顺序执行：

1. 选择输入文本
   - 若同时提供 `polished_text` 和 `original_text`，优先使用 `polished_text`。
   - 若只有一个文本字段，则使用该字段。
   - 若两个字段都很短或明显无意义，先让用户补充更完整文本。

2. 判断语气与意图
   根据文本判断整体方向，常见类型包括：
   - 开心/得意
   - 无语/吐槽
   - 委屈/求助
   - 拒绝/婉拒
   - 催促/提醒
   - 敷衍/摆烂
   - 惊讶/震惊
   - 日常可爱/轻松

3. 生成表情包文案与视觉提示
   - 把输入文本压缩成适合上图的短文案。
   - 文案优先短、狠、准，通常不超过 12 个汉字；确有必要时可放宽，但避免长段落。
   - 构造适合图片模型的视觉提示词，包含：人物表情、动作、构图、风格、字幕位置、背景简洁程度。

4. 选择输出模式
   - 默认：**带字图模式**
     - 直接要求图片模型生成带字表情包。
   - 备选：**无字图 + 文案模板模式**
     - 生成无字图。
     - 同时给出上字幕/下字幕或单行字幕建议，便于 UI 或后处理叠字。
   - 当用户明确说“不要直接在图里写字”“我要自己后处理字幕”，必须使用备选模式。

5. 调用脚本生成图片
   - 使用 `scripts/generate_meme.py`。
   - 默认图片模型为 `doubao-seedream-4-5-251128`。
   - 默认通过 OpenAI 兼容接口调用，基地址从环境变量读取。

6. 返回结果
   - 若生成成功，返回图片文件路径，以及必要时的字幕模板。
   - 不要输出冗长解释；以可直接发送为目标。

## 文案规则
始终遵守：
- 保留原意，不凭空添加事实。
- 可以夸张语气，但不要把温和表达改成攻击性内容。
- 优先适合聊天场景，不要写成公文、海报文案或长标题。
- 口语梗可以保留，但要确保用户看得懂。
- 如果原文已经很适合做梗，不要过度改写。

建议的文案模式：
- 单行爆点文案：适合短句梗图
- 上下分行文案：适合反差类表情包
- 无字图 + 单独配文：适合 UI 统一叠字

## 风格选择规则
按语气自动选择合适视觉风格：

- 轻松/日常：可爱贴纸风、简洁聊天表情风
- 吐槽/无语：夸张 meme 风、表情反差强、近景大表情
- 委屈/求助：弱小可怜风、简洁背景、人物居中
- 得意/炫耀：夸张庆祝风、强表情、动作感
- 提醒/催促：指向性手势、强调字幕、简洁背景

除非用户明确指定，不要默认生成过于写实或复杂场景。优先：
- 单主体
- 清晰表情
- 干净背景
- 强可读性
- 聊天中一眼看懂

## 直接带字图模式
默认优先使用此模式。

要求：
- 让模型在图中直接呈现主要文案。
- 文案尽量短。
- 字体视觉要清晰，尽量留白，避免挤满画面。
- 若需要两段文案，优先“上短下短”，不要多段排版。

## 无字图 + 文案模板模式
以下情况优先使用：
- 用户说要自己加字。
- 目标平台有统一叠字样式。
- 文案较长，直接由模型渲染可能不清晰。
- 需要更稳定的排版控制。

此模式下：
- 生成无字图。
- 同时给出建议字幕，如：
  - `top_text`
  - `bottom_text`
  - 或 `single_caption`

## 配置
默认环境变量：
- `MEME_MODEL_API_KEY`：必填，图片模型 API token
- `MEME_MODEL_BASE_URL`：默认 `https://models.audiozen.cn/v1`
- `MEME_MODEL_NAME`：默认 `doubao-seedream-4-5-251128`
- `MEME_OUTPUT_DIR`：图片输出目录，可选

## 脚本
使用 `scripts/generate_meme.py` 生成图片。

常用参数：
- `--text`：输入文本
- `--polished-text`：润色后文本，可选
- `--mode`：`direct-text` 或 `template`
- `--style`：可选，手动指定风格
- `--size`：图片尺寸，默认 `2K`
- `--output`：输出文件路径

## 示例

### 示例 1：默认带字图
输入：
- `original_text`: “我真的会谢”
- `polished_text`: “我真的会谢。”

处理：
- 优先使用润色后文本
- 判断为吐槽/无语
- 生成单张带字 meme 图

### 示例 2：自己后处理字幕
输入：
- `original_text`: “你先忙 我不急”
- 用户要求：不要直接在图里写字

处理：
- 走无字图 + 文案模板模式
- 返回图片和建议字幕

## 注意事项
- 仅生成一张图，不返回多候选，除非用户明确要求。
- 不要把普通聊天内容做成过于冒犯、低俗或恐怖的图。
- 当文本缺少明显情绪时，优先走日常轻松风。

