360 Secure SkillHub
360 安全技能中心

Language Tutor

该 Skill 读取 SENSEAUDIO_API_KEY,通过 SenseAudio TTS 接口把用户提供的词汇、句子或对话文本合成为 MP3 等音频,支持调速、多种音色与音频参数,并输出单词/句子分片、合并后的课程音频以及含译文与文件清单的 Markdown 学习指南;用 Python 辅助脚本需 requests、pydub,合并音频可能需 ffmpeg。

scikkk
scikkk
热度 69.46
最近更新 2026-05-11 17:31:25
分类:知识依赖:第三方 API / 代码执行 / 读写文件应用场景:语言学习 / 教学辅导

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add language-tutor
Metadata
name
senseaudio-language-tutor
description
Create language learning audio with SenseAudio TTS, including pronunciation drills, bilingual lessons, slowed speech practice, and dialogue exercises. Use when users need language learning materials, pronunciation practice, or vocabulary audio.
version
1.0.0
metadata
{"openclaw":{"requires":{"env":["SENSEAUDIO_API_KEY"],"bins":["python3"]},"primaryEnv":"SENSEAUDIO_API_KEY","homepage":"https://senseaudio.cn","install":[{"kind":"uv","package":"requests"},{"kind":"uv","package":"pydub"}]}}
compatibility
{"required_credentials":[{"name":"SENSEAUDIO_API_KEY","description":"API key from https://senseaudio.cn/platform/api-key","env_var":"SENSEAUDIO_API_KEY"}]}
homepage
https://senseaudio.cn
source
https://github.com/anthropics/skills

SenseAudio Language Tutor

Create interactive language-learning audio with official SenseAudio TTS endpoints and parameters.

What This Skill Does

  • Generate pronunciation examples in supported voices
  • Create bilingual vocabulary and sentence practice audio
  • Produce slowed-speed listening drills for learners
  • Build short dialogue exercises with repetition pauses
  • Export lesson audio files and companion study notes

Credential and Dependency Rules

  • Read the API key from SENSEAUDIO_API_KEY.
  • Send auth only as Authorization: Bearer <API_KEY>.
  • Do not place API keys in query parameters, logs, or saved examples.
  • If Python helpers are used, this skill expects python3, requests, and pydub.
  • pydub may also require a local audio backend such as ffmpeg; if unavailable, prefer writing individual audio files instead of merging them.

Official TTS Constraints

Use the official SenseAudio TTS rules summarized below:

  • HTTP endpoint: POST https://api.senseaudio.cn/v1/t2a_v2
  • Model: SenseAudio-TTS-1.0
  • Max text length: 10000 characters
  • voice_setting.voice_id is required
  • voice_setting.speed range: 0.5-2.0
  • Optional audio format values: mp3, wav, pcm, flac
  • Optional sample rates: 8000, 16000, 22050, 24000, 32000, 44100
  • Optional MP3 bitrates: 32000, 64000, 128000, 256000
  • Optional channels: 1 or 2

Recommended Workflow

  1. Prepare lesson content:
  • Split vocabulary, example sentences, and dialogues into short chunks.
  • Keep each API call comfortably below the 10000 character limit.
  1. Build minimal TTS requests:
  • Send model, text, stream, and voice_setting.voice_id.
  • Add speed, pitch, vol, and audio_setting only when needed.
  1. Decode and save audio safely:
  • HTTP responses return hex-encoded audio in data.audio; decode before saving.
  • Keep filenames deterministic and avoid exposing secrets in paths or logs.
  1. Compose lessons carefully:
  • If pydub and an audio backend are available, merge clips and insert silence.
  • Otherwise, emit per-word or per-sentence clips and a manifest/Markdown study guide.
  1. Handle failures and traceability:
  • Check HTTP status and provider error payloads before decoding audio.
  • Record trace_id only for troubleshooting and avoid showing it unless needed.

Minimal Helper

import binascii
import os

import requests

API_KEY = os.environ["SENSEAUDIO_API_KEY"]
API_URL = "https://api.senseaudio.cn/v1/t2a_v2"


def generate_tts(text, voice_id="male_0004_a", speed=1.0, stream=False):
    payload = {
        "model": "SenseAudio-TTS-1.0",
        "text": text,
        "stream": stream,
        "voice_setting": {
            "voice_id": voice_id,
            "speed": speed,
        },
        "audio_setting": {
            "format": "mp3",
            "sample_rate": 32000,
            "bitrate": 128000,
            "channel": 2,
        },
    }
    response = requests.post(
        API_URL,
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=60,
    )
    response.raise_for_status()
    data = response.json()
    audio_hex = data["data"]["audio"]
    return binascii.unhexlify(audio_hex), data.get("trace_id")

Patterns

Vocabulary Drill

  • Generate one clip for the target word
  • Generate one clip for an example sentence
  • Optionally generate a slower clip at speed=0.8
  • Save clips separately or merge with pauses

Bilingual Lesson

  • Alternate source phrase and translated phrase
  • Use short pauses (1000-2000ms) between clips
  • Consider different voice_id values for source and translation when helpful

Dialogue Practice

  • Create one clip per line of dialogue
  • Insert repetition pauses after each line
  • Prefer shorter turns for easier debugging and regeneration

Output Options

  • Individual MP3 clips for words, sentences, or dialogue turns
  • Merged lesson audio if local audio tooling is available
  • Markdown study guide with transcript, translation, and file manifest

Safety Notes

  • Do not hardcode credentials.
  • Do not claim unsupported language-selection parameters for TTS unless the official docs add them.
  • Avoid assuming raw bytes can be passed directly to pydub.AudioSegment; decode and load through a supported container format.