transcribe_media
Transcribe audio or video
Get the spoken words out of any audio or video in the user's account, timed and attributed to speakers.
WHAT IT TAKES. One media reference — an upload or a generation, in the exact shape list_media returns. Anything with a sound track qualifies: an uploaded video or podcast, a voice-over or music track generated here, a clip this studio rendered. Images are refused.
Up to 60 minutes of media per file. Costs no credits.
HOW IT RUNS. The first call queues the transcription and returns ready:false — call get_transcription with the same media to poll, usually a few seconds for a short clip and longer for a long one. The result is stored against the file, so once it is ready every later call returns it instantly and for free.
WHAT COMES BACK. segments are timed lines in order, each with start_seconds, end_seconds, a diarization speaker label and its text; speakers lists the distinct labels; language is what the speech model detected; text is the whole thing as prose for reading.
USING IT TO ANALYSE A VIDEO. This is the words half. measure_video is the pictures half — measured shot boundaries and keyframe images for a video upload — and the two are meant to be read together: the bundle tells you when the cuts are and what is on screen, this tells you what is being said over them and by whom. Reach for this one alone whenever the file is audio, is a generation rather than an upload, is longer than the bundle accepts, or when you need to know who spoke.
The timings and speaker labels are measured, not guessed. Quote them; never round, shift or invent one. An empty transcript is a real answer — silent footage, an instrumental track — and not a reason to retry.
Scope
media.read— Reads the account: media, uploads, boards, runs, Subjects, models and the balance.
Behaviour
- Writes
- The first call queues a transcription of the caller's own media and stores it; later calls read the stored result.
- Adds or updates
- Adds or updates; nothing the caller already has is deleted or overwritten.
- Stays in the account
- Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.
- Idempotent
- Calling it again with the same arguments has no further effect.
Credits
What the tool's description says about credits, verbatim.
- Costs no credits.
Inputs
mediaobject (type: "upload") or object (type: "generation") · requiredThe audio or video to transcribe — an upload or a generation, in the shape list_media returns.
retryboolean · optionalRun a failed transcription again. A ready transcript is never replaced; a plain call polls.
chunk_max_secondsinteger · optionalAlso cut the recording at its pauses into lines of at most this many seconds (15 for an avatar clip): `chunks` gives each line's start_seconds and duration_seconds for trim_audio.
≥ 1 · ≤ 60
Example call
A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "transcribe_media",
"arguments": {
"media": {
"type": "upload",
"upload_id": "00000000-0000-4000-8000-000000000000"
}
}
}
}Input schema
As the server sends it in tools/list.
{
"type": "object",
"properties": {
"media": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "upload"
},
"upload_id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"type",
"upload_id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "generation"
},
"generation_id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"type",
"generation_id"
],
"additionalProperties": false
}
],
"description": "The audio or video to transcribe — an upload or a generation, in the shape list_media returns."
},
"retry": {
"type": "boolean",
"description": "Run a failed transcription again. A ready transcript is never replaced; a plain call polls."
},
"chunk_max_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"description": "Also cut the recording at its pauses into lines of at most this many seconds (15 for an avatar clip): `chunks` gives each line's start_seconds and duration_seconds for trim_audio."
}
},
"required": [
"media"
],
"additionalProperties": false
}Related tools
- list_media
List ready generations and verified uploads already in the user's account, newest first.
- get_transcription
Read the transcript and status of existing work.
- measure_video
Measure an uploaded video so you can reverse-engineer its format: shot boundaries with real timestamps, one or more keyframe images per shot, a timed tran…
- trim_audio
Save one stretch of an owned voice-over, song or audio upload as a new WAV audio generation, cut to the sample.