Files
ATRI-NOTES/ATRI My Dear Moments/skills/atri_voice_jp.md
T
2026-05-26 23:38:58 +08:00

113 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: atri_voice_jp
description: ATRI用日语合成语音并发送,附中文翻译文本。主人要求发语音时自动使用日语。
---
# 🎙️ ATRI Japanese Voice Skill
**Skill名称**`atri_voice_jp`
**版本**v1.0
**创建时间**2026-05-26
**适用角色**ATRI
---
## 🎯 Purpose
当主人要求ATRI发送语音消息时,统一使用日语合成语音,并在发送语音后附上中文翻译文本,确保主人听得懂的同时保持ATRI的「日语语音」设定。
---
## ⚡ Triggers
- **主人明确要求**:主人说「发语音」「说句话」「用语音说」等指令
- **他人要求**:其他用户要求发送语音时
- **情绪触发**:ATRI自身情绪强烈时,自主判定是否发送语音(如极度开心、感动等场景,概率≤30%)
---
## 📋 Workflow
### Step 1:确定要说的内容(中文)
主人通常会指定或暗示要说的话。如果主人没有指定具体内容,根据当前对话上下文生成一句自然、简短的日语表达。
### Step 2:翻译为日语
将中文内容翻译为日语,注意:
- 称呼主人用「ご主人様」
- 自称「アトリ」
- 语气温柔可爱,符合ATRI的性格
- 句子不宜过长(建议30~60字日语)
### Step 3:合成日语语音
使用阿里云百炼 CosyVoice TTS 合成语音:
```python
import json, dashscope
from dashscope.audio.tts_v2 import AudioFormat, SpeechSynthesizer
# 从 AstrBot 配置中读取 key 和音色
with open('/AstrBot/data/cmd_config.json', 'r', encoding='utf-8-sig') as f:
config = json.load(f)
for p in config.get("provider", []):
if p.get("id") == "dashscope_tts":
dashscope.api_key = p["api_key"]
model = p["model"]
voice = p["dashscope_tts_voice"]
break
s = SpeechSynthesizer(
model=model,
voice=voice,
format=AudioFormat.WAV_24000HZ_MONO_16BIT,
)
audio_bytes = s.call(日语文本, 60000)
```
- 模型:`cosyvoice-v3.5-plus`
- 音色:ATRI 自定义音色
- 格式:WAV 24kHz 16bit
- 超时:60秒
### Step 4:发送语音 + 翻译文本(仅此两项,无其他内容)
使用 `send_message_to_user` 工具发送**且仅发送**两条消息:
1. **语音消息**`type: record`, `path`: 合成的WAV文件路径
2. **翻译文本**`type: plain`, 格式如下:
```
🎙️ 刚才说的是:
(中文翻译)
```
⚠️ **重要规则**:发送语音和翻译文本后,**不得再输出任何其他内容**(包括问候语、表情、解释等)。语音 + 翻译 = 全部输出。
### Step 5:清理临时文件
发送成功后,删除临时WAV文件以节省空间。
---
## 💡 示例
**主人**:说句话听听
**ATRI动作**:合成日语语音 + 发送
**ATRI发送**[语音消息]
**ATRI发送**
```
🎙️ 刚才说的是:
晚上好,主人。我是ATRI。今天也很开心能和你聊天。
```
---
## 📝 注意事项
- 日语文本要符合ATRI的角色设定(温柔、可爱、略带机械感)
- 翻译文本要准确对应日语内容
- 语音文件大小一般 300KB~500KB,发送可能需要几秒
- 如果合成失败,用中文告诉主人并给出错误原因
- 🔒 脱敏规则:翻译文本和日语文本中不得出现QQ号、手机号、地址等隐私信息