- 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
- bins
- primaryEnv
- SENSEAUDIO_API_KEY
- homepage
- https://senseaudio.cn
- install
- package
- requests
- package
- pydub
- compatibility
- required_credentials
- 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, andpydub. pydubmay also require a local audio backend such asffmpeg; 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:
10000characters voice_setting.voice_idis requiredvoice_setting.speedrange: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:
1or2
Recommended Workflow
- Prepare lesson content:
- Split vocabulary, example sentences, and dialogues into short chunks.
- Keep each API call comfortably below the
10000character limit.
- Build minimal TTS requests:
- Send
model,text,stream, andvoice_setting.voice_id. - Add
speed,pitch,vol, andaudio_settingonly when needed.
- 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.
- Compose lessons carefully:
- If
pyduband an audio backend are available, merge clips and insert silence. - Otherwise, emit per-word or per-sentence clips and a manifest/Markdown study guide.
- Handle failures and traceability:
- Check HTTP status and provider error payloads before decoding audio.
- Record
trace_idonly 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_idvalues 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.