← 返回
未分类

Poetry Recitation

Generate poetry recitation videos using a cloned voice or system voice with starry background and Chinese subtitles. Use when: (1) User asks to recite a poem...
生成诗歌朗诵视频,使用克隆声音或系统声音,搭配星空背景和中文字幕。适用场景:用户要求朗诵诗歌时。
zhangyanbo2007
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 453
下载
💾 0
安装
1
版本
#latest

概述

Poetry Recitation

Generate a video: voice recitation + starry background + timed Chinese subtitles.

Prerequisites

  • TTS pipeline at ~/.openclaw/skills/tts-gen-pipeline/ with at least one cloned voice
  • Dependencies: dashscope, websockets, moviepy, pillow, numpy
  • Font: NotoSerifCJK at /usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc

Quick Start

python3 scripts/poetry_recitation.py --poem "床前明月光\n疑是地上霜" --title "静夜思"
# or specify a voice:
python3 scripts/poetry_recitation.py --poem "..." --title "静夜思" --voice 章彦博

Arguments

ArgRequiredDescription
----------------------------
--poemYesPoem text, use \n for line breaks
--titleNoTitle displayed at top of video
--voiceNoVoice name: cloned voice (e.g. 章彦博) or system voice (cherry/serena/ethan/chelsie). Default: first cloned voice
--outputNoOutput video path (default: ~/workspace/audio/_朗诵.mp4</code>)</td></tr></tbody></table><h2>Available Voices</h2><p><strong>Cloned voices:</strong> Check with <code>python3 ~/.openclaw/skills/tts-gen-pipeline/scripts/generate.py list-local</code></p><p><strong>System voices:</strong> cherry (甜美女声), serena (温柔女声), ethan (沉稳男声), chelsie (磁性男声)</p><h2>Workflow</h2><ol><li>Accept poem text from user (and optional <code>--voice</code> preference)</li><li>Run <code>poetry_recitation.py</code> with the poem</li><li>Send the resulting video to user via MEDIA path — no extra confirmation needed</li></ol><h2>Voice Resolution</h2><ul><li>If <code>--voice</code> matches a local cloned voice name → uses cloned voice model</li><li>If <code>--voice</code> matches a system voice name → uses system voice model</li><li>If not specified → uses first available cloned voice</li></ul><h2>Output</h2><p>Generated video (1920x1080, 24fps, H.264 + AAC) saved to <code>~/workspace/audio/</code>.</p></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-05-03 11:11 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=6b1ef1d466163e36f9b10f9525b04eaa" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/26/434745_65fcbbf50c4ffc24a5999fb9206811df.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781525642%3B1813061642&q-key-time=1781525642%3B1813061642&q-header-list=host&q-url-param-list=&q-signature=07e8de746efad0315301bf137983b14c5ae468ff" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;"></span> <h3><a href="/s/skill-publisher-universal">Publish Skill Publisher</a></h3> <div class="rec-owner">zhangyanbo2007</div> <div class="rec-desc">通用发布工具,用于 Claude Code 技能。校验、打包并发布至 ClawHub、Hermes Agent 和 anthropics/skills,支持双语 README。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 0</span> <span style="color:#5b6abf;">📥 296</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;"></span> <h3><a href="/s/ascii-excalidraw">Publish Ascii Excalidraw</a></h3> <div class="rec-owner">zhangyanbo2007</div> <div class="rec-desc">将ASCII艺术图转换为手绘Excalidraw JSON文件。先分析结构,再逐模块增量生成。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 0</span> <span style="color:#5b6abf;">📥 382</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;"></span> <h3><a href="/s/video-vocal-remover">Publish Video Vocal Remover</a></h3> <div class="rec-owner">zhangyanbo2007</div> <div class="rec-desc">从视频中去除人声,保留机械声或环境音。适用于删除说话声、保留机器声、保留背景音等场景。不适用于完全去除音频(使用ffmpeg -an),该技能专用于频率处理。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 0</span> <span style="color:#5b6abf;">📥 293</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>