Token导航 LogoToken导航TokenDH.com
效率敏感数据clawhub未标认证来源可访问clear审计提醒

audiopodaudiopod 音频

Agent Skill

用于辅助音频、音乐、语音转写、语音合成或声音素材处理。它适合让 Agent 生成配乐说明、整理音频流程、调用语音工具或处理播客和视频配音素材。使用时需要确认输入音频来源、输出格式、时长和模型限制;涉及人声克隆、版权音乐或公开发布时,应先核对授权和合规边界。

总安装

108,826

周安装

4,360

GitHub Stars

3

下载量

35,229
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:audiopod(audiopod 音频)
来源仓库:https://github.com/rakesh1002/audiopod
安装命令:
openclaw skills install audiopod
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install audiopod

简介

使用 AudioPod AI 的 API 执行音频处理任务,包括 AI 音乐生成(文本到音乐、文本到说唱、乐器、样本、人声)、主干分离、文本到语音、降噪、语音到文本转录、说话者分离和媒体提取。当用户需要从文本生成音乐/歌曲/说唱、将歌曲拆分为词干/人声/乐器、从文本生成语音、清理嘈杂的音频、转录音频/视频或从 YouTube/URL 提取音频时使用。需要 AUDIOPOD_API_KEY 环境变量或直接传递 api_key。

SKILL.md

name
audiopod
description
Use AudioPod AI's API for audio processing tasks including AI music generation (text-to-music, text-to-rap, instrumentals, samples, vocals), stem separation, text-to-speech, noise reduction, speech-to-text transcription, speaker separation, and media extraction. Use when the user needs to generate music/songs/rap from text, split a song into stems/vocals/instruments, generate speech from text, clean up noisy audio, transcribe audio/video, or extract audio from YouTube/URLs. Requires AUDIOPOD_API_KEY env var or pass api_key directly.

AudioPod AI

Full audio processing API: music generation, stem separation, TTS, noise reduction, transcription, speaker separation, wallet management.

Setup

pip install audiopod  # Python
npm install audiopod  # Node.js

Auth: set AUDIOPOD_API_KEY env var or pass to client constructor.

Getting an API Key

  1. Sign up at https://audiopod.ai/auth/signup (free, no credit card required)
  2. Go to https://www.audiopod.ai/dashboard/account/api-keys
  3. Click "Create API Key" and copy the key (starts with ap_)
  4. Add funds to your wallet at https://www.audiopod.ai/dashboard/account/wallet (pay-as-you-go, no subscription)
from audiopod import AudioPod
client = AudioPod()  # uses AUDIOPOD_API_KEY env var
# or: client = AudioPod(api_key="ap_...")

AI Music Generation

Generate songs, rap, instrumentals, samples, and vocals from text prompts.

Tasks: text2music (song with vocals), text2rap (rap), prompt2instrumental (instrumental), lyric2vocals (vocals only), text2samples (loops/samples), audio2audio (style transfer), songbloom

Python SDK

# Generate a full song with lyrics
result = client.music.song(
    prompt="Upbeat pop, synth, drums, 120 bpm, female vocals, radio-ready",
    lyrics="Verse 1:\
Walking down the street on a sunny day\
\
Chorus:\
We're on fire tonight!",
    duration=60
)
print(result["output_url"])

# Generate rap
result = client.music.rap(
    prompt="Lo-Fi Hip Hop, 100 BPM, male rap, melancholy, keyboard chords",
    lyrics="Verse 1:\
Started from the bottom, now we climbing...",
    duration=60
)

# Generate instrumental (no lyrics needed)
result = client.music.instrumental(
    prompt="Atmospheric ambient soundscape, uplifting, driving mood",
    duration=30
)

# Generic generate with explicit task
result = client.music.generate(
    prompt="Electronic dance music, high energy",
    task="text2samples",  # any task type
    duration=30
)

# Async: submit then poll
job = client.music.create(
    prompt="Chill lofi beat", 
    duration=30, 
    task="prompt2instrumental"
)
result = client.music.wait_for_completion(job["id"], timeout=600)

# Get available genre presets
presets = client.music.get_presets()

# List/manage jobs
jobs = client.music.list(skip=0, limit=50)
job = client.music.get(job_id=123)
client.music.delete(job_id=123)

cURL

# Song with lyrics
curl -X POST "https://api.audiopod.ai/api/v1/music/text2music" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"upbeat pop, synth, 120bpm, female vocals", "lyrics":"Walking down the street...", "audio_duration":60}'

# Rap
curl -X POST "https://api.audiopod.ai/api/v1/music/text2rap" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Lo-Fi Hip Hop, male rap, 100 BPM", "lyrics":"Started from the bottom...", "audio_duration":60}'

# Instrumental
curl -X POST "https://api.audiopod.ai/api/v1/music/prompt2instrumental" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"ambient soundscape, uplifting", "audio_duration":30}'

# Samples/loops
curl -X POST "https://api.audiopod.ai/api/v1/music/text2samples" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"drum loop, sad mood", "audio_duration":15}'

# Vocals only
curl -X POST "https://api.audiopod.ai/api/v1/music/lyric2vocals" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"clean vocals, happy", "lyrics":"Eternal chorus of unity...", "audio_duration":30}'

# Check job status / get result
curl "https://api.audiopod.ai/api/v1/music/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Get genre presets
curl "https://api.audiopod.ai/api/v1/music/presets" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List jobs
curl "https://api.audiopod.ai/api/v1/music/jobs?skip=0&limit=50" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Delete job
curl -X DELETE "https://api.audiopod.ai/api/v1/music/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Parameters

FieldRequiredDescription
promptyesStyle/genre description
lyricsfor song/rap/vocalsSong lyrics with verse/chorus structure
audio_durationnoDuration in seconds (default: 30)
genre_presetnoGenre preset name (from presets endpoint)
display_namenoTrack display name

Stem Separation

Split audio into individual instrument/vocal tracks.

Modes

ModeStemsOutputUse Case
single1Specified stem onlyVocal isolation, drum extraction
two2vocals + instrumentalKaraoke tracks
four4vocals, drums, bass, otherStandard remixing (default)
six6+ guitar, pianoFull instrument separation
producer8+ kick, snare, hihatBeat production
studio12+ cymbals, sub_bass, synthProfessional mixing
mastering16Maximum detailForensic analysis

Single stem options: vocals, drums, bass, guitar, piano, other

Python SDK

# Sync: extract and wait for result
result = client.stems.separate(
    url="https://youtube.com/watch?v=VIDEO_ID",
    mode="six",
    timeout=600
)
for stem, url in result["download_urls"].items():
    print(f"{stem}: {url}")

# From local file
result = client.stems.separate(file="/path/to/song.mp3", mode="four")

# Single stem extraction
result = client.stems.separate(
    url="https://youtube.com/watch?v=ID",
    mode="single",
    stem="vocals"
)

# Async: submit then poll
job = client.stems.extract(url="https://youtube.com/watch?v=ID", mode="six")
print(f"Job ID: {job['id']}")
status = client.stems.status(job["id"])
# or wait:
result = client.stems.wait_for_completion(job["id"], timeout=600)

# List available modes
modes = client.stems.modes()

# Job management
jobs = client.stems.list(skip=0, limit=50, status="COMPLETED")
job = client.stems.get(job_id=1234)
client.stems.delete(job_id=1234)

cURL

# Extract from URL
curl -X POST "https://api.audiopod.ai/api/v1/stem-extraction/api/extract" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "url=https://youtube.com/watch?v=VIDEO_ID" \
  -F "mode=six"

# Extract from file
curl -X POST "https://api.audiopod.ai/api/v1/stem-extraction/api/extract" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "file=@/path/to/song.mp3" \
  -F "mode=four"

# Single stem
curl -X POST "https://api.audiopod.ai/api/v1/stem-extraction/api/extract" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "url=URL" \
  -F "mode=single" \
  -F "stem=vocals"

# Check job status
curl "https://api.audiopod.ai/api/v1/stem-extraction/status/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List available modes
curl "https://api.audiopod.ai/api/v1/stem-extraction/modes" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List jobs (filter by status: PENDING, PROCESSING, COMPLETED, FAILED)
curl "https://api.audiopod.ai/api/v1/stem-extraction/jobs?skip=0&limit=50&status=COMPLETED" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Get specific job
curl "https://api.audiopod.ai/api/v1/stem-extraction/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Delete job
curl -X DELETE "https://api.audiopod.ai/api/v1/stem-extraction/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Response Format

{
  "id": 1234,
  "status": "COMPLETED",
  "download_urls": {
    "vocals": "https://...",
    "drums": "https://...",
    "bass": "https://...",
    "other": "https://..."
  },
  "quality_scores": {
    "vocals": 0.95,
    "drums": 0.88
  }
}

Text to Speech

Generate speech from text with 50+ voices in 60+ languages. Supports voice cloning.

Voice Types

  • 50+ production-ready voices — multilingual, supporting 60+ languages with auto-detection
  • Custom clones — clone any voice with ~5 seconds of audio sample

Python SDK

# Generate speech and wait for result
result = client.voice.generate(
    text="Hello, world! This is a test.",
    voice_id=123,
    speed=1.0
)
print(result["output_url"])

# Async: submit then poll
job = client.voice.speak(
    text="Hello world",
    voice_id=123,
    speed=1.0
)
status = client.voice.get_job(job["id"])
result = client.voice.wait_for_completion(job["id"], timeout=300)

# List all available voices
voices = client.voice.list()
for v in voices:
    print(f"{v['id']}: {v['name']}")

# Clone a voice (needs ~5 sec audio sample)
new_voice = client.voice.create(
    name="My Voice Clone",
    audio_file="./sample.mp3",
    description="Cloned from recording"
)

# Get/delete voice
voice = client.voice.get(voice_id=123)
client.voice.delete(voice_id=123)

cURL (Raw HTTP — most reliable)

# List all voices
curl "https://api.audiopod.ai/api/v1/voice/voice-profiles" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Generate speech (FORM DATA, not JSON!)
curl -X POST "https://api.audiopod.ai/api/v1/voice/voices/{VOICE_UUID}/generate" \
  -H "Authorization: Bearer $AUDIOPOD_API_KEY" \
  -d "input_text=Hello world, this is a test" \
  -d "audio_format=mp3" \
  -d "speed=1.0"

# Poll job status
curl "https://api.audiopod.ai/api/v1/voice/tts-jobs/{JOB_ID}/status" \
  -H "Authorization: Bearer $AUDIOPOD_API_KEY"

# SDK-style endpoints (alternative)
# Generate via SDK endpoint
curl -X POST "https://api.audiopod.ai/api/v1/voice/tts/generate" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello world","voice_id":123,"speed":1.0}'

# Poll via SDK endpoint
curl "https://api.audiopod.ai/api/v1/voice/tts/status/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List voices (SDK endpoint)
curl "https://api.audiopod.ai/api/v1/voice/voices" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Clone a voice
curl -X POST "https://api.audiopod.ai/api/v1/voice/voices" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "name=My Voice" \
  -F "file=@sample.mp3" \
  -F "description=Cloned voice"

# Delete voice
curl -X DELETE "https://api.audiopod.ai/api/v1/voice/voices/VOICE_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Generate Parameters

FieldRequiredDescription
input_textyesText to speak (max 5000 chars). Use input_text for raw HTTP, text for SDK
audio_formatnomp3, wav, ogg (default: mp3)
speedno0.25 - 4.0 (default: 1.0)
languagenoISO code, auto-detected if omitted

Response Format

// Generate response
{"job_id": 12345, "status": "pending", "credits_reserved": 25}

// Status response (completed)
{"status": "completed", "output_url": "https://r2-url/generated.mp3"}

Important Notes

  • Raw HTTP generate endpoint uses form data, not JSON. Field is input_text not text
  • SDK endpoint (/api/v1/voice/tts/generate) uses JSON with field text
  • Output files may be WAV disguised as .mp3 — convert with ffmpeg -i output.mp3 -c:a aac real.m4a
  • ~55 credits per generation, wallet-based billing

Speaker Separation

Separate audio by speaker with automatic diarization.

Python SDK

# Diarize and wait for result
result = client.speaker.identify(
    file="./meeting.mp3",
    num_speakers=3,  # optional hint for accuracy
    timeout=600
)
for segment in result["segments"]:
    print(f"Speaker {segment['speaker']}: {segment['text']} [{segment['start']:.1f}s - {segment['end']:.1f}s]")

# From URL
result = client.speaker.identify(
    url="https://youtube.com/watch?v=VIDEO_ID",
    num_speakers=2
)

# Async: submit then poll
job = client.speaker.diarize(
    file="./meeting.mp3",
    num_speakers=3
)
result = client.speaker.wait_for_completion(job["id"], timeout=600)

# Job management
jobs = client.speaker.list(skip=0, limit=50, status="COMPLETED")
job = client.speaker.get(job_id=123)
client.speaker.delete(job_id=123)

cURL

# Diarize from file
curl -X POST "https://api.audiopod.ai/api/v1/speaker/diarize" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "file=@meeting.mp3" \
  -F "num_speakers=3"

# Diarize from URL
curl -X POST "https://api.audiopod.ai/api/v1/speaker/diarize" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "url=https://youtube.com/watch?v=VIDEO_ID" \
  -F "num_speakers=2"

# Check job status
curl "https://api.audiopod.ai/api/v1/speaker/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List jobs
curl "https://api.audiopod.ai/api/v1/speaker/jobs?skip=0&limit=50" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Delete job
curl -X DELETE "https://api.audiopod.ai/api/v1/speaker/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Speech to Text (Transcription)

Transcribe audio/video with speaker diarization, word-level timestamps, and multiple output formats.

Python SDK

# Transcribe URL and wait
result = client.transcription.transcribe(
    url="https://youtube.com/watch?v=VIDEO_ID",
    speaker_diarization=True,
    min_speakers=2,
    max_speakers=5,
    timeout=600
)
print(f"Language: {result['detected_language']}")
for seg in result["segments"]:
    print(f"[{seg['start']:.1f}s] {seg.get('speaker','?')}: {seg['text']}")

# Batch: multiple URLs at once
result = client.transcription.transcribe(
    urls=["https://youtube.com/watch?v=ID1", "https://youtube.com/watch?v=ID2"],
    speaker_diarization=True
)

# Upload local file
job = client.transcription.upload(
    file_path="./recording.mp3",
    language="en",
    speaker_diarization=True
)
result = client.transcription.wait_for_completion(job["id"], timeout=600)

# Async: submit then poll
job = client.transcription.create(
    url="https://youtube.com/watch?v=ID",
    language="en",
    speaker_diarization=True,
    word_timestamps=True,
    min_speakers=2,
    max_speakers=4
)
result = client.transcription.wait_for_completion(job["id"], timeout=600)

# Get transcript in different formats
transcript_json = client.transcription.get_transcript(job_id=123, format="json")
transcript_srt = client.transcription.get_transcript(job_id=123, format="srt")
transcript_vtt = client.transcription.get_transcript(job_id=123, format="vtt")
transcript_txt = client.transcription.get_transcript(job_id=123, format="txt")

# Job management
jobs = client.transcription.list(skip=0, limit=50, status="COMPLETED")
job = client.transcription.get(job_id=123)
client.transcription.delete(job_id=123)

cURL

# Transcribe from URL
curl -X POST "https://api.audiopod.ai/api/v1/transcribe/transcribe" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://youtube.com/watch?v=ID","enable_speaker_diarization":true,"word_timestamps":true}'

# Transcribe multiple URLs
curl -X POST "https://api.audiopod.ai/api/v1/transcribe/transcribe" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":["URL1","URL2"],"enable_speaker_diarization":true}'

# Upload file for transcription
curl -X POST "https://api.audiopod.ai/api/v1/transcribe/transcribe-upload" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "files=@recording.mp3" \
  -F "language=en" \
  -F "enable_speaker_diarization=true"

# Get job status
curl "https://api.audiopod.ai/api/v1/transcribe/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Get transcript in specific format (json, srt, vtt, txt)
curl "https://api.audiopod.ai/api/v1/transcribe/jobs/JOB_ID/transcript?format=srt" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List jobs
curl "https://api.audiopod.ai/api/v1/transcribe/jobs?offset=0&limit=50" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Delete job
curl -X DELETE "https://api.audiopod.ai/api/v1/transcribe/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Parameters

FieldRequiredDescription
url / urlsyes (or file)URL(s) to transcribe (YouTube, SoundCloud, direct links)
languagenoISO 639-1 code (auto-detected if omitted)
enable_speaker_diarizationnoEnable speaker identification (default: false)
min_speakers / max_speakersnoSpeaker count hints for better diarization
word_timestampsnoEnable word-level timestamps (default: true)

Output Formats

  • json — Full structured output with segments, timestamps, speakers
  • srt — SubRip subtitle format
  • vtt — WebVTT subtitle format
  • txt — Plain text transcript

Noise Reduction

Remove background noise from audio/video files.

Python SDK

# Denoise and wait for result
result = client.denoiser.denoise(file="./noisy-audio.mp3", timeout=600)
print(f"Clean audio: {result['output_url']}")

# From URL
result = client.denoiser.denoise(url="https://example.com/noisy.mp3")

# Async: submit then poll
job = client.denoiser.create(file="./noisy-audio.mp3")
result = client.denoiser.wait_for_completion(job["id"], timeout=600)

# From URL (async)
job = client.denoiser.create(url="https://example.com/noisy.mp3")

# Job management
jobs = client.denoiser.list(skip=0, limit=50, status="COMPLETED")
job = client.denoiser.get(job_id=123)
client.denoiser.delete(job_id=123)

cURL

# Denoise from file
curl -X POST "https://api.audiopod.ai/api/v1/denoiser/denoise" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "file=@noisy-audio.mp3"

# Denoise from URL
curl -X POST "https://api.audiopod.ai/api/v1/denoiser/denoise" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -F "url=https://example.com/noisy.mp3"

# Check job status
curl "https://api.audiopod.ai/api/v1/denoiser/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# List jobs
curl "https://api.audiopod.ai/api/v1/denoiser/jobs?skip=0&limit=50" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Delete job
curl -X DELETE "https://api.audiopod.ai/api/v1/denoiser/jobs/JOB_ID" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Wallet & Billing

Check balance, estimate costs, and view usage history.

Python SDK

# Get current balance
balance = client.wallet.get_balance()
print(f"Balance: ${balance['balance_usd']}")

# Check if balance is sufficient for an operation
check = client.wallet.check_balance(
    service_type="stem_extraction",
    duration_seconds=180
)
print(f"Sufficient: {check['sufficient']}")

# Estimate cost before running
estimate = client.wallet.estimate_cost(
    service_type="transcription",
    duration_seconds=300
)
print(f"Cost: ${estimate['cost_usd']}")

# Get pricing for all services
pricing = client.wallet.get_pricing()

# View usage history
usage = client.wallet.get_usage(page=1, limit=50)

cURL

# Get balance
curl "https://api.audiopod.ai/api/v1/api-wallet/balance" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Check balance sufficiency
curl -X POST "https://api.audiopod.ai/api/v1/api-wallet/check-balance" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service_type":"stem_extraction","duration_seconds":180}'

# Estimate cost
curl -X POST "https://api.audiopod.ai/api/v1/api-wallet/estimate-cost" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service_type":"transcription","duration_seconds":300}'

# Get pricing
curl "https://api.audiopod.ai/api/v1/api-wallet/pricing" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Usage history
curl "https://api.audiopod.ai/api/v1/api-wallet/usage?page=1&limit=50" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

API Endpoint Summary

ServiceEndpointMethod
Music/api/v1/music/{task}POST
Music jobs/api/v1/music/jobs/{id}GET/DELETE
Music presets/api/v1/music/presetsGET
Stems/api/v1/stem-extraction/api/extractPOST (multipart)
Stems status/api/v1/stem-extraction/status/{id}GET
Stems modes/api/v1/stem-extraction/modesGET
Stems jobs/api/v1/stem-extraction/jobsGET
TTS generate/api/v1/voice/voices/{uuid}/generatePOST (form data)
TTS generate (SDK)/api/v1/voice/tts/generatePOST (JSON)
TTS status/api/v1/voice/tts-jobs/{id}/statusGET
TTS status (SDK)/api/v1/voice/tts/status/{id}GET
Voice list/api/v1/voice/voice-profilesGET
Voice list (SDK)/api/v1/voice/voicesGET
Speaker/api/v1/speaker/diarizePOST (multipart)
Speaker jobs/api/v1/speaker/jobs/{id}GET/DELETE
Transcribe URL/api/v1/transcribe/transcribePOST (JSON)
Transcribe upload/api/v1/transcribe/transcribe-uploadPOST (multipart)
Transcript output/api/v1/transcribe/jobs/{id}/transcript?format=GET
Transcribe jobs/api/v1/transcribe/jobsGET
Denoise/api/v1/denoiser/denoisePOST (multipart)
Denoise jobs/api/v1/denoiser/jobs/{id}GET/DELETE
Wallet balance/api/v1/api-wallet/balanceGET
Wallet pricing/api/v1/api-wallet/pricingGET
Wallet usage/api/v1/api-wallet/usageGET

Auth Headers

Two auth styles work:

  • X-API-Key: ap_... — works for most endpoints
  • Authorization: Bearer ap_... — works for TTS generate/status

Known Issues

  • SDK method signatures may differ from raw API — when in doubt, use cURL examples
  • TTS output stored on Cloudflare R2, download via output_url in job status
  • TTS output files may be WAV disguised as .mp3 — convert with ffmpeg before sending via WhatsApp

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

83.8%
按下载量换算29,522

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills