feat: user-configurable concurrency for image/movie/audio generation
## Problem
When generating movies with Veo 3 across multiple beats, all `movieGenerator` nodes run concurrently and hit API rate limits. Currently, concurrency is determined automatically by provider, but users cannot override it.
## Solution
Add `concurrency` field to `imageParams`, `movieParams`, and `audioParams` in MulmoScript schema. User-specified values take precedence over provider-based auto-detection.
### Schema
```json
{
"imageParams": { "concurrency": 8 },
"movieParams": { "concurrency": 2 },
"audioParams": { "concurrency": 4 }
}
```
All optional. When unspecified, existing provider-based logic is used.
### Implementation
| Action | Graph | Concurrency Logic |
|---|---|---|
| **images** | `images_graph_data` | `min(imageParams.concurrency, movieParams.concurrency)` — takes the smaller value since image and movie share the same graph. Falls back to existing provider detection |
| **audio** | `audio_graph_data` | `audioParams.concurrency` — falls back to existing provider detection (elevenlabs → 1, others → 8) |
### Changes
1. **`schema.ts`**: Add `concurrency` (positive integer, optional) to `mulmoImageParamsSchema`, `mulmoMovieParamsSchema`, `audioParamsSchema`
2. **`mulmo_presentation_style.ts`**: `getConcurrency()` checks user-specified concurrency first, falls back to provider-based logic
3. **`audio.ts`**: `getConcurrency()` checks `audioParams.concurrency` first, falls back to provider-based logic
### Current concurrency defaults (unchanged when not specified)
| Provider | Current Concurrency |
|---|---|
| OpenAI gpt-image-1 | 16 |
| Other image providers | 4 |
| ElevenLabs / Kotodama TTS | 1 |
| Other TTS providers | 8 |
## User Prompt
- 各ビートにmoviePromptを持つscriptをveo3で映像化しようとすると、rate limitに引っかかって失敗する
- image/movie/audio それぞれのconcurrencyをcontextで指定できるようにしたい
- imagesのほうはimageParams/movieParamsの小さい方の値を使う
关闭于 2026-04-05 0 条评论