Intégrer la génération audio
PRÉREQUIS : Exécutez d'abord
+rw-check-compatibility. Exécutez+rw-fetch-api-referencepour charger la dernière référence API avant l'intégration. Nécessite+rw-setup-api-keypour les identifiants API. Nécessite+rw-integrate-uploadspour les fichiers audio/vidéo locaux.
Aidez les utilisateurs à ajouter la génération audio Runway à leur code côté serveur.
Modèles disponibles
| Modèle | Endpoint | Cas d'usage | Coût |
|---|---|---|---|
eleven_multilingual_v2 |
POST /v1/text_to_speech |
Synthèse vocale | 1 crédit/50 caractères |
eleven_text_to_sound_v2 |
POST /v1/sound_effect |
Génération d'effets sonores | 1-2 crédits |
eleven_voice_isolation |
POST /v1/voice_isolation |
Isoler la voix de l'audio | 1 crédit/6 sec |
eleven_voice_dubbing |
POST /v1/voice_dubbing |
Doubler l'audio dans d'autres langues | 1 crédit/2 sec |
eleven_multilingual_sts_v2 |
POST /v1/speech_to_speech |
Conversion de voix | 1 crédit/3 sec |
Synthèse vocale
Générez de la parole à partir de texte en utilisant le modèle multilingue ElevenLabs.
Node.js SDK
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
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]
Effets sonores
Générez des effets sonores à partir de descriptions textuelles.
const task = await client.soundEffect.create({
model: 'eleven_text_to_sound_v2',
promptText: 'Thunder rolling across a stormy sky'
}).waitForTaskOutput();
task = client.sound_effect.create(
model='eleven_text_to_sound_v2',
prompt_text='Thunder rolling across a stormy sky'
).wait_for_task_output()
Isolation vocale
Extrayez la voix de l'audio avec du bruit de fond.
// Si vous utilisez un fichier local, téléchargez-le d'abord
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();
Doublage vocal
Doublez l'audio/vidéo dans d'autres langues.
const task = await client.voiceDubbing.create({
model: 'eleven_voice_dubbing',
audioUri: 'https://example.com/speech.mp3',
targetLang: 'es' // Spanish
}).waitForTaskOutput();
Conversion vocale
Convertissez une voix en une autre.
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();
Modèle d'intégration
Express.js — Endpoint Synthèse vocale
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 — Effets sonores
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))
Conseils
- Les URLs de sortie expirent dans 24-48 heures. Téléchargez les fichiers audio dans votre propre stockage.
- Pour les fichiers audio locaux (isolation vocale, doublage, conversion vocale), téléchargez d'abord via
+rw-integrate-uploads. - Les IDs de voix peuvent être listés via l'endpoint voices — consultez
+rw-api-referencepour les détails. - Le coût de la synthèse vocale varie avec la longueur du texte : 1 crédit pour 50 caractères.