---
title: Nemotron-3.5-Transcribe
canonical_url: "https://www.modelscope.cn/studios/nv-community/Nemotron-3.5-Transcribe"
md_url: "https://www.modelscope.cn/studios/nv-community/Nemotron-3.5-Transcribe.md"
repository: nv-community/Nemotron-3.5-Transcribe
chinese_name: "Nemotron 3.5 Transcribe"
last_updated: 2026-10-29
sdk_type: docker
sdk_version: 6.29.1
downloads: 0
stars: 23
---

# Nemotron-3.5-Transcribe

> Nemotron-3.5-Transcribe - nv-community 在 ModelScope 创建的在线 Demo。NVIDIA Nemotron 3.5 Transcribe 语音智能演示：语音问答、转写、播客、电影字幕与卡拉 OK。私有部署，推理服务待配置。

nv-community/Nemotron-3.5-Transcribe 是 ModelScope 魔搭社区上的在线可交互 Demo（创空间），基于 docker 6.29.1 构建，中文名为「Nemotron 3.5 Transcribe」。

- **Repository**: nv-community/Nemotron-3.5-Transcribe
- **SDK**: docker
- **SDK version**: 6.29.1
- **Downloads**: 0
- **Stars**: 23
- **Last updated**: 2026-10-29

Source: https://www.modelscope.cn/studios/nv-community/Nemotron-3.5-Transcribe

---

# NVIDIA Nemotron Transcribe

Interactive speech intelligence demos backed by NVIDIA Nemotron 3.5 Transcribe on NVCF. Legacy Brev and custom backends remain available for rollback.

## ModelScope 私有部署说明

当前部署只使用免费 CPU 运行 Web 应用，Nemotron 模型推理由外部服务提供。未填写服务地址或密钥时，页面和已恢复的缓存样例可用，实时推理接口返回明确的未配置提示；`/api/livez` 仅检查应用存活，`/api/health` 检查转写服务，不应混为一谈。

请在创空间「设置」中填写配置。原生 NIM 使用 `TRANSCRIBE_BACKEND=nim`、`NVCF_ENDPOINT`、`MODEL_NAME=nvidia-nemotron-3p5-transcribe` 和密文变量 `NVCF_API_KEY`，同时设置 `BREV_RELAY_ENABLED=false`，详见 [Reprocess 配置与回退](ops/reprocess-nvcf.md)。旧版 custom-vLLM NVCF 模式仍使用 `TRANSCRIBE_BACKEND=nvcf`，与 `nim` 请求格式不同，不能混用。自建兼容服务使用 `custom`、`VLLM_URL` 和可选的 `VLLM_API_KEY`；Brev 使用 `brev`、`BREV_ENDPOINT` 和可选的 `BREV_API_KEY`。地址填写基础 URL，不带 `/v1` 或 `/v1/chat/completions`，模型标识必须与实际后端一致。Karaoke／Podcast 保留独立的时间戳配置；未配置独立地址时，可使用共享的原生 NIM 后端。

多轮 Ask Audio 有独立服务配置 `ASK_AUDIO_ENDPOINT`、`ASK_AUDIO_API_KEY`（可回退到 `NVCF_API_KEY`）和 `ASK_AUDIO_MODEL`。YouTube 导入／卡拉 OK 分离另需 `KARAOKE_YOUTUBE_ENDPOINT`、`KARAOKE_YOUTUBE_API_KEY`；可单独设置 `YOUTUBE_SPEECH_ENDPOINT`、`YOUTUBE_SPEECH_API_KEY`，否则由 Karaoke 配置派生。所有 key 均留空，不包含原部署凭据，也不会自动猜测第三方服务地址。

修改变量后重新部署。完整空值模板见 `.env.example`；模板不会自动加载，真实值只填在平台设置中，勿提交 Git。Brev relay 默认关闭，原 HF 的 relay 鉴权不能直接沿用到私有 ModelScope 创空间；需另行确认连接方式后再启用。电影全片自动下载也默认关闭。应用数据使用 `/mnt/workspace/nemotron-transcribe`，不再假定连接了 NVIDIA 的 HF 存储桶；不要把私有创空间 URL 当作可供外部推理服务访问的公开媒体地址。

这是源 demo 的私有部署副本，不额外授予代码或媒体使用许可，原素材署名及权利确认保留；对外公开前请另行核实相关授权。下文保留上游功能说明，涉及 HF bucket 和完整媒体目录的说明不代表本部署已全部同步。

## Upstream demo description

The karaoke workspace separates source recordings
with Demucs, sends the isolated vocal stems to Nemotron for CTC word
timestamps, and plays the time-aligned instrumentals while highlighting the
lyrics. The catalog includes Italian, French, German, English, Hebrew, Hindi / Urdu,
Spanish, Polish, Portuguese, and Farsi tracks. Karaoke is the default landing page.

The MP3 upload form is temporarily hidden from the Karaoke UI. Its existing
backend still accepts MP3 recordings up to 50 MB and 10 minutes long. Uploads
are separated on CPU, then transcribed without reference lyrics or wording
corrections. One upload is processed at a time; progress is streamed to the UI.
Uploaded recordings are not added to the shared catalog. Playback uses temporary,
unguessable media URLs, available until the server restarts or for up to 24 hours.
The Docker image includes Demucs and its model weights. For local development,
set `DEMUCS_PYTHON` to a Python executable with Demucs 4.0.1 and compatible
PyTorch/torchaudio installed; FFmpeg and FFprobe must be on PATH.

Karaoke also accepts a public YouTube song link up to 10 minutes long. The backend
calls the GPU service at `/v1/karaoke` and receives the original MP3, instrumental,
vocals, and a 16 kHz mono FLAC for transcription. Local Demucs is skipped for
YouTube songs. The bundle is checked for allowed filenames, sizes, hashes, audio
formats, full decoding, and matching timelines before Nemotron transcribes the
isolated vocals without wording corrections. The new song is selected in the
current session; it is not added to the shared catalog. Busy responses retain the
URL and enable a manual retry after the service's delay; requests are never retried
automatically. Only Karaoke uses this service.

The remote service uses HTTP/2 keepalives, a 960-second deadline, and bounded
ZIP downloads (100 MiB). Storage redirects never receive the service API key.
The UI displays the current stage and elapsed time while the GPU service works;
it does not invent separation percentages. GPU timings are recorded in server logs.

For the retained MP3 backend, vocal separation streams Demucs segment percentages to the UI. Two CPU workers
each use one math thread to avoid oversubscription in the CPU-limited Space.
A separator that makes no progress for three minutes is stopped with a retryable
message; the overall separation limit remains 20 minutes. Stage transitions and
separation milestones are logged with elapsed times for troubleshooting.

Podcasts retain Apple Podcasts episode URLs. Load an episode to preview its
name and details before starting transcription.

The movie workspace uses the first 30 minutes of each film. Each excerpt is
transcribed and aligned in one pass to keep word timestamps and speaker IDs in
one diarization timeline. Export SRT downloads all subtitle cues for the selected
excerpt, regardless of transcript search or speaker filters.

The Docker Space serves the application on port `7860`. Runtime media and demo data are mounted from the attached storage bucket at `/data`.

## Runtime configuration

### Select the transcription backend

Karaoke and Podcast use the timestamp-capable native NIM on NVCF when
`TIMESTAMP_NIM_ENDPOINT` is set. See [configuration and ModelScope deployment](ops/nvcf-timestamps.md).
Ask Audio has its own `ASK_AUDIO_ENDPOINT`. Movie subtitles are pre-generated.

`TRANSCRIBE_BACKEND` selects the Reprocess/shared backend, and is the fallback
for Karaoke and Podcast when `TIMESTAMP_NIM_ENDPOINT` is absent. There is no
automatic failover or inference retry between providers.

| `TRANSCRIBE_BACKEND` | Endpoint variable | Credential secret |
| --- | --- | --- |
| `nim` | `NVCF_ENDPOINT` | `NVCF_API_KEY` (native NIM contract) |
| `brev` | `BREV_ENDPOINT` | Optional `BREV_API_KEY`; omit for our current Brev service |
| `nvcf` | `NVCF_ENDPOINT` | `NVCF_API_KEY` (legacy fallback: `VLLM_API_KEY`) |
| `custom` | `VLLM_URL` | Optional `VLLM_API_KEY` |
| `auto` (default) | `VLLM_URL`, then `NVCF_ENDPOINT`, then localhost:8000 | Determined by endpoint hostname |

For the current native NIM service:

```text
TRANSCRIBE_BACKEND=nim
NVCF_ENDPOINT=https://d9c47484-ee3b-400f-92d2-a4272bd97131.invocation.api.nvcf.nvidia.com
MODEL_NAME=nvidia-nemotron-3p5-transcribe
BREV_RELAY_ENABLED=false
```

See [Reprocess integration, one-recording contract, and rollback](ops/reprocess-nvcf.md).
The app connects directly to NVCF; the Brev relay is disabled. `nim` and legacy
`nvcf` use different request formats and are not interchangeable. `/api/health`
checks the selected backend. Historical [relay operations](ops/brev-relay.md)
remain available for rollback.


The YouTube download and GPU separation service remains independently configured
by `KARAOKE_YOUTUBE_ENDPOINT`. Switching transcription does not recover that
service if its NVCF deployment is unavailable. Existing catalog audio and cached
timelines remain usable.

Secrets:

- `NVCF_API_KEY`
- `BREV_RELAY_TOKEN`: required when the outbound relay is enabled.
- `BREV_API_KEY` (optional)
- `VLLM_API_KEY` (optional, for custom endpoints)
- `KARAOKE_YOUTUBE_API_KEY`: credential authorized to invoke the YouTube audio function.

Variables:

- `TRANSCRIBE_BACKEND`: `nim`, `brev`, legacy `nvcf`, `custom`, or backwards-compatible `auto`.
- `BREV_ENDPOINT`
- `BREV_RELAY_ENABLED`: `true` starts the relay; default disabled.
- `BREV_RELAY_PORT`: loopback HTTP port, default `18000`.
- `KARAOKE_YOUTUBE_ENDPOINT`: full GPU karaoke bundle endpoint, currently `https://cdaf93aa-c0eb-459c-b092-b8b4a604bd38.invocation.api.nvcf.nvidia.com/v1/karaoke`.
- `NVCF_ENDPOINT`
- `VLLM_URL`
- `MODEL_NAME`
- `MAX_TOKENS`
- `MAX_AUDIO_ITEMS`
- `VLLM_MAX_AUDIO_DECODE_DURATION_S`
- `PODCAST_AUDIO_TRANSPORT`: `auto` (default), `url`, `staged`, or `inline`. With public media storage configured, `auto` stages a capped FLAC and sends its URL to NVCF. Otherwise it tries the publisher URL for known episodes up to one hour and retains inline FLAC as a compatibility fallback.
- `PODCAST_PUBLIC_MEDIA_DIR` and `PODCAST_PUBLIC_MEDIA_BASE_URL`: writable local mount plus its public HTTPS prefix for temporary NVCF media delivery.
- `KARAOKE_CACHE_DIR`: persistent cache for generated word-level karaoke timelines; defaults to `/data/cache/karaoke`.
- `YOUTUBE_CACHE_DIR`: shared persistent YouTube audio cache; defaults to `/data/cache/youtube` on the attached bucket.

## YouTube in Ask Audio and Reprocess

Both tabs import YouTube audio through the dedicated service's `/v1/speech`
route. Videos longer than 55 minutes are clipped to the first 55 minutes; the
UI explicitly reports truncation. Karaoke keeps its separate ten-minute limit
and GPU separation flow. Speech imports use 16 kHz mono FLAC and do not run
separation. The download service allows one request at a time across routes;
users receive a busy message and retry manually.

Validated YouTube audio is cached in the shared persistent bucket for seven days,
with background retention cleanup targeting at most 128 prepared variants and
10 GiB. The cache groups entries by canonical video ID: Ask Audio and Reprocess
share one speech FLAC; Karaoke stores a separate set of original audio, music,
vocals, and transcription FLAC. Short/watch links and playlist parameters resolve
to the same video. The 55-minute speech and ten-minute Karaoke limits remain
separate. Cached imports skip the YouTube service and, for Karaoke, Demucs;
transcription and word alignment still run live. Response `audioCached` reports
audio reuse independently of the existing timeline `cached` field.

The UI requests `audioTransport: "reference"` when importing speech audio. It
receives a small, opaque attachment reference and a same-origin playback URL,
instead of downloading base64 audio and uploading it again on Send. `/api/chat`
resolves the reference on the server before sending audio to the selected model.
Playback supports byte ranges and the audio download button remains available.
Session references last up to 24 hours, are bounded to 32 attachments/2 GiB, and
expire on a Space restart; reimporting then restores audio from the persistent
cache. API clients that omit `audioTransport` retain the original base64 response.

The bucket survives Space restarts and rebuilds. Preload demo links by importing
each once in Ask Audio or Reprocess and once in Karaoke when it is within the
song limit. Repeating an import should return `audioCached: true`. Hashes and
sizes are verified when copying cached files; missing, expired, or corrupt
entries are downloaded and validated again. A cache-storage failure does not
discard a successful import. Duplicate in-flight requests for the same video
and profile receive 429 with a retry delay; they are not queued. To invalidate a
video, remove its directory under `/data/cache/youtube/<video-id>` while no
request is using it. This cache belongs to the demo; direct NVCF consumers still
call the uncached download service.

- `YOUTUBE_SPEECH_ENDPOINT`: optional full `/v1/speech` URL. By default, derived
  from `KARAOKE_YOUTUBE_ENDPOINT` by replacing its `/v1/karaoke` suffix.
- `YOUTUBE_SPEECH_API_KEY`: optional secret; defaults to the Karaoke service key.
- `/api/youtube-stream`: UI import route with SSE keepalives during preparation.
- `/api/youtube`: equivalent JSON response for existing clients.

The adapter validates bundle members, source identity, duration, format, and
fully decoded sample count before returning audio. NVCF storage redirects are
handled without forwarding the service key. Browser attachments retain FLAC
format when submitted to the existing chat handler. No transcription endpoint
or model wording changes are required. Long inputs still share the model's
context/output budget; dense speech or large outputs may require shorter clips.
Deploy service 0.4.0 or newer before publishing this UI change.

## Demo load protection

The Space queues and limits live processing in the application container. Cached
examples stay available. See [limits and API admission protocol](ops/demo-load-protection.md).
Direct consumers of processing routes must obtain an admission ticket first.
