Labsco
runwayml logo

rw-integrate-audio

โ˜… 55

by runwayml ยท part of runwayml/skills

Help users integrate Runway audio APIs (TTS, sound effects, voice isolation, dubbing)

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup
๐Ÿงฉ One of 7 skills in the runwayml/skills package โ€” works on its own, and pairs well with its siblings.

Help users integrate Runway audio APIs (TTS, sound effects, voice isolation, dubbing)

Inspect the full instructions your agent will receiveExpand

This is the exact playbook injected into your agent when the skill activates โ€” shown here so you can audit it before installing. You don't need to read it to use the skill.

by runwayml

Help users integrate Runway audio APIs (TTS, sound effects, voice isolation, dubbing) npx skills add https://github.com/runwayml/skills --skill rw-integrate-audio Download ZIPGitHub55

Integrate Audio Generation

PREREQUISITE: Run +rw-check-compatibility first. Run +rw-fetch-api-reference to load the latest API reference before integrating. Requires +rw-setup-api-key for API credentials. Requires +rw-integrate-uploads for local audio/video files.

Help users add Runway audio generation to their server-side code.

Available Models

Model Endpoint Use Case Cost eleven_multilingual_v2 POST /v1/text_to_speech Text to speech 1 credit/50 chars eleven_text_to_sound_v2 POST /v1/sound_effect Sound effect generation 1-2 credits eleven_voice_isolation POST /v1/voice_isolation Isolate voice from audio 1 credit/6 sec eleven_voice_dubbing POST /v1/voice_dubbing Dub audio to other languages 1 credit/2 sec eleven_multilingual_sts_v2 POST /v1/speech_to_speech Voice conversion 1 credit/3 sec

Text-to-Speech

Generate speech from text using the ElevenLabs multilingual model.

Node.js SDK

Copy & paste โ€” that's it
import RunwayML from '@runwayml/sdk';

const client = new RunwayML();

const task = await client.textToSpeech.create({
 model: 'eleven_multilingual_v2',
 promptText: 'Hello, welcome to our application!',
 voice: { type: 'runway-preset', presetId: 'Maya' }
}).waitForTaskOutput();

const audioUrl = task.output[0];

Python SDK

Copy & paste โ€” that's it
from runwayml import RunwayML

client = RunwayML()

task = client.text_to_speech.create(
 model='eleven_multilingual_v2',
 prompt_text='Hello, welcome to our application!',
 voice={ 'type': 'runway-preset', 'presetId': 'Maya' }
).wait_for_task_output()

audio_url = task.output[0]

Sound Effects

Generate sound effects from text descriptions.

Copy & paste โ€” that's it
const task = await client.soundEffect.create({
 model: 'eleven_text_to_sound_v2',
 promptText: 'Thunder rolling across a stormy sky'
}).waitForTaskOutput();
Copy & paste โ€” that's it
task = client.sound_effect.create(
 model='eleven_text_to_sound_v2',
 prompt_text='Thunder rolling across a stormy sky'
).wait_for_task_output()

Voice Isolation

Extract voice from audio with background noise.

Copy & paste โ€” that's it
// If using a local file, upload first
const upload = await client.uploads.createEphemeral(
 fs.createReadStream('/path/to/noisy-audio.mp3')
);

const task = await client.voiceIsolation.create({
 model: 'eleven_voice_isolation',
 audioUri: upload.runwayUri
}).waitForTaskOutput();

Voice Dubbing

Dub audio/video into other languages.

Copy & paste โ€” that's it
const task = await client.voiceDubbing.create({
 model: 'eleven_voice_dubbing',
 audioUri: 'https://example.com/speech.mp3',
 targetLang: 'es' // Spanish
}).waitForTaskOutput();

Speech-to-Speech

Convert one voice to another.

Copy & paste โ€” that's it
const task = await client.speechToSpeech.create({
 model: 'eleven_multilingual_sts_v2',
 media: { type: 'audio', uri: 'https://example.com/original-speech.mp3' },
 voice: { type: 'runway-preset', presetId: 'Noah' }
}).waitForTaskOutput();

Integration Pattern

Express.js โ€” Text-to-Speech Endpoint

Copy & paste โ€” that's it
import RunwayML from '@runwayml/sdk';
import express from 'express';

const client = new RunwayML();
const app = express();
app.use(express.json());

app.post('/api/text-to-speech', async (req, res) => {
 try {
 const { text, voiceId } = req.body;

 const task = await client.textToSpeech.create({
 model: 'eleven_multilingual_v2',
 promptText: text,
 voice: { type: 'runway-preset', presetId: voiceId || 'Maya' }
 }).waitForTaskOutput();

 res.json({ audioUrl: task.output[0] });
 } catch (error) {
 console.error('TTS failed:', error);
 res.status(500).json({ error: error.message });
 }
});

FastAPI โ€” Sound Effects

Copy & paste โ€” that's it
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from runwayml import RunwayML

app = FastAPI()
client = RunwayML()

class SoundRequest(BaseModel):
 prompt: str

@app.post("/api/sound-effect")
async def generate_sound(req: SoundRequest):
 try:
 task = client.sound_effect.create(
 model='eleven_text_to_sound_v2',
 prompt_text=req.prompt
 ).wait_for_task_output()
 return {"audio_url": task.output[0]}
 except Exception as e:
 raise HTTPException(status_code=500, detail=str(e))

Tips

  • Output URLs expire in 24-48 hours. Download audio files to your own storage.

  • For local audio files (voice isolation, dubbing, speech-to-speech), upload via +rw-integrate-uploads first.

  • Voice IDs can be listed via the voices endpoint โ€” see +rw-api-reference for details.

  • Text-to-speech cost scales with text length: 1 credit per 50 characters.