speech-to-text
Skill36 starsChanged 7 months agoMITView on GitHub
Transcribe audio to text using each::sense AI. Convert speech from audio and video files into accurate text with punctuation, speaker detection, and timestamp support. Handles multiple languages, accents, and noisy environments. Use for: transcription, subtitles, meeting notes, interview transcripts, podcast show notes, accessibility, captioning. Triggers: speech to text, transcribe, transcription, audio to text, stt, voice to text, convert speech, dictation, subtitles, captions, whisper, transcribe audio
- Reads credentials
- Sends data out
We split this skill into the rules it gives an agent
1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 249
Specify the language: if it is not English to improve accuracy.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Speech to Text
Transcribe audio and video into accurate text using each::sense — the intelligent AI agent that automatically selects the best model for your request.
Quick Start
Requires an each::labs API key. Get one at eachlabs.ai.
Using curl
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe this audio recording into text. Include punctuation and paragraph breaks."},
{"type": "image_url", "image_url": {"url": "https://example.com/meeting-recording.mp3"}}
]
}
],
"stream": false
}'Using Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EACHLABS_API_KEY",
base_url="https://eachsense-agent.core.eachlabs.run/v1"
)
response = client.chat.completions.create(
model="eachsense/beta",
messages=[{"role": "user", "content": "Transcribe this audio recording into text. Include punctuation and paragraph breaks."}],
# Images are included in the message content array above
)
print(response.choices[0].message.content)With Reference Image
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe the speech in this video clip. Include timestamps for each sentence."},
{"type": "image_url", "image_url": {"url": "https://example.com/presentation-video.mp4"}}
]
}
],
"stream": false
}'Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.
Streaming
Set "stream": true for real-time SSE responses, or "stream": false for complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.
Transcription Capabilities
| Feature | Description | How to Request |
| Basic Transcription | Plain text output with punctuation | "Transcribe this audio" |
| Timestamps | Time codes for each segment | "Transcribe with timestamps" |
| Speaker Labels | Identify different speakers | "Transcribe and label each speaker" |
| Paragraph Breaks | Logical text segmentation | "Transcribe with paragraph breaks" |
| Language Detection | Auto-detect spoken language | "Detect the language and transcribe" |
| Translation | Transcribe and translate | "Transcribe and translate to English" |
| Summary | Transcribe and summarize | "Transcribe and provide a summary" |
| SRT Format | Subtitle file format | "Transcribe in SRT subtitle format" |
Supported Input Formats
| Type | Formats |
| Audio | MP3, WAV, M4A, FLAC, OGG, AAC, WMA, WEBM |
| Video | MP4, MOV, AVI, MKV, WEBM |
Prompt Tips
Specify Output Format
Be explicit about how you want the transcription structured:
"Transcribe this audio verbatim, including filler words like
um and uh. Add timestamps every 30 seconds. Format as:
[00:00] Text here
[00:30] More text here"Request Speaker Identification
For multi-speaker audio:
"Transcribe this conversation and label each speaker as
Speaker 1, Speaker 2, etc. Start a new line when the
speaker changes."Clean Transcription vs. Verbatim
# Verbatim (includes everything)
"Transcribe exactly as spoken, including filler words, false starts, and repetitions"
# Clean (polished)
"Transcribe cleanly, removing filler words and false starts. Fix grammar for readability."Specify Language
For non-English audio or to guide recognition:
"This audio is in German. Transcribe it in German."
"This audio is in Japanese. Transcribe in Japanese and provide an English translation."Examples
Meeting Transcription
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe this meeting recording. Label each speaker (Speaker 1, Speaker 2, etc.). Add timestamps at the start of each speaker turn. Include a brief summary of key decisions and action items at the end."},
{"type": "image_url", "image_url": {"url": "https://example.com/team-meeting.mp3"}}
]
}
],
"stream": false
}'Subtitle Generation (SRT Format)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe this video into SRT subtitle format. Each subtitle should be 1-2 lines, maximum 42 characters per line. Format:\n\n1\n00:00:01,000 --> 00:00:04,000\nSubtitle text here\n\n2\n00:00:04,500 --> 00:00:08,000\nNext subtitle here"},
{"type": "image_url", "image_url": {"url": "https://example.com/tutorial-video.mp4"}}
]
}
],
"stream": false
}'Interview Transcript
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe this interview recording. Format as a clean Q&A transcript with the interviewer questions in bold and interviewee answers in regular text. Remove filler words and false starts. Add paragraph breaks for readability."},
{"type": "image_url", "image_url": {"url": "https://example.com/interview.mp3"}}
]
}
],
"stream": false
}'Multilingual Transcription with Translation
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "This audio is a Spanish-language podcast episode. Transcribe it in the original Spanish, then provide a complete English translation below. Maintain paragraph structure in both versions."},
{"type": "image_url", "image_url": {"url": "https://example.com/spanish-podcast.mp3"}}
]
}
],
"stream": false
}'Podcast Show Notes
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Transcribe this podcast episode and generate structured show notes. Include: 1) Episode summary (2-3 sentences), 2) Key topics discussed with timestamps, 3) Notable quotes, 4) Any resources or links mentioned, 5) Full transcript with speaker labels and timestamps."},
{"type": "image_url", "image_url": {"url": "https://example.com/podcast-episode.mp3"}}
]
}
],
"stream": false
}'Batch Transcription
# Transcribe multiple audio files
AUDIO_FILES=(
"https://example.com/recording-1.mp3"
"https://example.com/recording-2.mp3"
"https://example.com/recording-3.mp3"
)
for AUDIO in "${AUDIO_FILES[@]}"; do
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d "{
\"messages\": [{\"role\": \"user\", \"content\": \"Transcribe this audio with timestamps and speaker labels. Clean transcription, no filler words.\"}],
\"image_urls\": [\"$AUDIO\"],
\"stream\": false
}"
echo "---"
doneTranscription Quality Tips
- Clean audio produces far better results. Remove background noise when possible before transcribing.
- Specify the language if it is not English to improve accuracy.
- Shorter segments (under 30 minutes) transcribe more reliably than very long recordings.
- Single speaker audio is easiest; multi-speaker requires explicit labeling instructions.
- Technical jargon can be specified: "This is a medical lecture; expect terminology like..." to improve accuracy.
- Accented speech is handled well, but mentioning the accent helps: "The speaker has a Scottish accent."
Common Pitfalls
- No format instructions produces a wall of text. Specify paragraphs, timestamps, or speakers.
- Expecting perfect verbatim from noisy audio is unrealistic. Clean audio gives clean transcripts.
- Very long audio without chunking may hit limits. For hour-long recordings, consider splitting into segments.
- Overlapping speakers are hard for any system. Minimize crosstalk in source recordings.
- Background music competing with speech reduces accuracy. Voice-isolated audio works best.
Related Skills
- Text to Speech — Convert transcripts back to speech
- Voice Generation — Generate new voice audio from text
- Video Generation — Create videos to pair with transcripts
- Lyrics Generation — Transcribe song lyrics from audio
Documentation
Other versions18 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 18
- calesthio/OpenMontage★ 72ksame name
- NoizAI/skills★ 526same name
- elevenlabs/skills★ 508same name
- tadaspetra/loop★ 296same name
- sarvamai/skills★ 73same name
- deepgram/skills★ 26same name
- 0gfoundation/0g-agent-skills★ 15same name
- imMamdouhaboammar/motion-graphics-skills★ 15same name
- LinHao-city/StoryMind★ 10same name
- DavidTeju/shared-skills★ 9same name
8 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use speech-engine, voice-isolator and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
RobStrayerSkillspeech-engine
Add real-time voice conversations to a custom agent runtime with ElevenLabs Speech Engine. Use when building Speech Engine servers, WebSocket handlers, WebRTC browser clients, conversation token endpoints, interruption-aware streaming responses, or voice-enabled chat agents that connect developer-owned server logic to ElevenLabs speech-to-text and text-to-speech.
Also in 3 projects that use this
RobStrayerSkillvoice-isolator
Remove background noise and isolate vocals/speech from audio using ElevenLabs Voice Isolator (audio isolation) API. Use when cleaning up noisy recordings, removing music or background ambience from dialogue, isolating speech from field recordings, preparing audio for transcription, extracting vocals, or any "denoise / clean up / isolate voice" task.
Also in 3 projects that use this
perso-aiSkilldubbing
Auto-dub (voice-translate) videos into other languages, with lip-sync (Perso AI Dubbing).
Also in 4 projects that use this
wlzhSkillvoice-changer
音频变声处理工具 - 使用 RVC AI 模型进行真实的声音转换,支持视频直接输入
Also in 3 projects that use this
marswaveaiSkillmusic
Generate, remix, extend, edit, and analyze AI music (Mureka). Triggers on: "音乐", "music", "生成音乐", "generate music", "翻唱", "cover", "混音", "remix", "续写", "extend", "纯音乐", "instrumental", "配乐", "soundtrack", "分轨", "stem", "识别歌词", "recognize lyrics", "作曲", "compose", "create a song", "做一首歌".
Also in 3 projects that use this
Chinna95PSkillagents
Also in 4 projects that use this
In this repository28 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- background-removalSkill
- face-swapSkill
- image-editingSkill
- image-generationSkill
- image-upscalingSkill
- lyrics-generationSkill
- music-generationSkill
- song-generationSkill
- sound-effectsSkill
- speech-to-textSkill
- text-to-speechSkill
- video-editingSkill
- video-generationSkill
- voice-generationSkill
- background-removalSkill
- face-swapSkill
- image-editingSkill
- image-generationSkill
- image-upscalingSkill
- lyrics-generationSkill
- music-generationSkill
- song-generationSkill
- sound-effectsSkill
- text-to-speechSkill
- video-editingSkill
- video-generationSkill
- voice-generationSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

