ressemble
Text-to-Speech and Speech-to-Text integration using Resemble AI HTTP API.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-ressemble
Repository
Skill path: skills/adriano-vr/ressemble
Text-to-Speech and Speech-to-Text integration using Resemble AI HTTP API.
Open repositoryBest for
Primary workflow: Analyze Data & AI.
Technical facets: Full Stack, Backend, Data / AI, Integration.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install ressemble into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding ressemble to shared team environments
- Use ressemble for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: ressemble
displayName: Ressemble - Adriano
version: 1.0.0
description: Text-to-Speech and Speech-to-Text integration using Resemble AI HTTP API.
author: Adriano Vargas
tags: [tts, stt, audio, ai, voice]
---
# Ressemble β Text & Voice AI Integration
This skill integrates OpenClaw with the Resemble AI HTTP API, enabling:
- π Speech-to-Text (audio transcription)
- π Text-to-Speech (voice synthesis)
It uses direct HTTP calls to Resemble's production endpoints and supports asynchronous transcription polling.
---
## Features
### resemble-tts
Generate high-quality speech audio from text input.
Supports:
- Custom `voice_uuid`
- MP3 output format
- Base64 audio return
### resemble-stt
Transcribe audio files to text using Resemble AI.
Supports:
- Multipart audio upload
- Automatic polling until transcription is complete
- Returns clean transcript text
---
## Requirements
You must define the environment variable:
```bash
export RESEMBLE_API_KEY="your_api_key_here"
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "adriano-vr",
"slug": "ressemble",
"displayName": "Ressemble TTS e STT",
"latest": {
"version": "1.0.1",
"publishedAt": 1771954042125,
"commit": "https://github.com/openclaw/skills/commit/7190d92f9fd6c2ef3801a356fe019c33a83a4c7a"
},
"history": [
{
"version": "1.0.0",
"publishedAt": 1771876037146,
"commit": "https://github.com/openclaw/skills/commit/bfba510a2a3b791e1de3a7519ae9e23d31cc7a35"
}
]
}
```
### scripts/stt.sh
```bash
#!/usr/bin/env bash
set -euo pipefail
if [[ "${1:-}" == "" ]]; then
echo "Usage: stt.sh <audio-file>"
exit 1
fi
INPUT_AUDIO="$1"
if [[ ! -f "$INPUT_AUDIO" ]]; then
echo "File not found: $INPUT_AUDIO"
exit 1
fi
if [[ -z "${RESEMBLE_API_KEY:-}" ]]; then
echo "Missing RESEMBLE_API_KEY"
exit 1
fi
echo "π€ Sending audio for transcription..."
RESPONSE=$(curl -s -X POST "https://app.resemble.ai/api/v2/speech-to-text" \
-H "Authorization: Bearer $RESEMBLE_API_KEY" \
-F "file=@${INPUT_AUDIO}")
JOB_ID=$(echo "$RESPONSE" | jq -r '.id')
if [[ "$JOB_ID" == "null" ]]; then
echo "Failed to create STT job"
echo "$RESPONSE"
exit 1
fi
STATUS="processing"
while [[ "$STATUS" == "processing" ]]; do
sleep 2
STATUS=$(curl -s "https://app.resemble.ai/api/v2/speech-to-text/${JOB_ID}" \
-H "Authorization: Bearer $RESEMBLE_API_KEY" | jq -r '.status')
done
if [[ "$STATUS" != "completed" ]]; then
echo "Transcription failed"
exit 1
fi
TRANSCRIPT=$(curl -s "https://app.resemble.ai/api/v2/speech-to-text/${JOB_ID}" \
-H "Authorization: Bearer $RESEMBLE_API_KEY" | jq -r '.transcript')
echo "$TRANSCRIPT"
```
### scripts/tts.sh
```bash
#!/usr/bin/env bash
set -euo pipefail
if [[ "${1:-}" == "" ]]; then
echo "Usage: tts.sh \"text\" [VOICE_UUID]"
exit 1
fi
TEXT="$1"
VOICE_UUID="${2:-01aa67f7}"
OUTPUT_FILE="/tmp/resemble_$(date +%s).mp3"
if [[ -z "${RESEMBLE_API_KEY:-}" ]]; then
echo "Missing RESEMBLE_API_KEY"
exit 1
fi
echo "π Generating speech..."
RESPONSE=$(curl -s -X POST "https://f.cluster.resemble.ai/synthesize" \
-H "Authorization: Bearer $RESEMBLE_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"voice_uuid\": \"$VOICE_UUID\",
\"data\": \"$TEXT\",
\"output_format\": \"mp3\"
}")
SUCCESS=$(echo "$RESPONSE" | jq -r '.success')
if [[ "$SUCCESS" != "true" ]]; then
echo "TTS failed:"
echo "$RESPONSE"
exit 1
fi
echo "$RESPONSE" | jq -r '.audio_content' | base64 -d > "$OUTPUT_FILE"
echo "MEDIA:$OUTPUT_FILE"
```