Introduction¶
Agents commonly handle text translation, but “making this video into an English version” usually isn’t a simple tool call: either manually uploading to a web app, or connecting ffmpeg, ASR, translation, TTS, and timeline alignment yourself.
pinch-eng/dsh-audio-dub is a dubbing plugin for DeepSeek Harness (DSH), encapsulating this process into a server-side task: passing in a local path or direct media URL, and returning a finished dubbing that preserves the original speaker’s voice.
What is this¶
It is a DSH dubbing plugin maintained by pinch-eng, under the MIT license, package version 0.1.0.
Its core positioning is: translating video or audio into another language while preserving the original speaker’s voice, i.e., AI voice cloning. Transcription, translation, voice cloning, and timing are all completed on the server, and DSH waits for the result.
The plugin provides three tools:
dub_mediadub_statusdub_languages
Supported target languages include:
zh, en, es, fr, de, pt, ru, ja, ko, it
The source language can be auto.
Core Tools¶
dub_media¶
Used to submit a dubbing task.
| Parameter | Type | Required | Description |
|---|---|---|---|
source |
string | Yes | Local file path, or direct media URL |
target_lang |
string | Yes | Target language |
source_lang |
string | No | Source language, default auto |
reduce_accent |
boolean | No | Optional parameter |
wait |
boolean | No | Whether to wait for the result, default true |
wait_seconds |
integer | No | Wait budget, default 600, max 1800 |
Local files are first uploaded to the presigned upload target in a streaming manner, and then the task is submitted.
Exhausting the wait budget does not mean the task failed. The task will continue on the server, and the returned job_id can be used with dub_status to query the status.
dub_status¶
Used to query task status.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id |
string | Yes | Job ID returned by dub_media |
wait |
boolean | No | Whether to wait for completion, default false |
wait_seconds |
integer | No | Wait budget |
dub_languages¶
No parameters.
This tool performs a local query, does not generate network calls, and does not incur costs.
Installation & Enablement¶
First install the plugin to a DSH profile. Taking the headless profile as an example:
dsh plugin --profile headless add github:pinch-eng/dsh-audio-dub
Upon installation, the plugin registers itself and does not require manual editing of cordis.yml.
Then set the API key:
export PINCH_API_KEY=pk_xxx
You can try a dubbing task:
dsh --profile headless "dub ./demo.mp4 into English"
Configuration¶
Below are the plugin configuration items and default values:
| Field | Type | Default | Description |
|---|---|---|---|
apiKey |
string | process.env.PINCH_API_KEY |
API key |
baseUrl |
string | https://portal.startpinch.com |
Service address |
pollIntervalMs |
integer | 15000 |
Polling interval for status while waiting, minimum 5000 |
MCP Alternative¶
If you do not install the plugin, you can also use the hosted MCP server via the official bridge:
- id: mcp-pinch
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: pinch
transport: streamable-http
url: https://portal.startpinch.com/api/mcp
headers:
Authorization: !!js `Bearer ${process.env.PINCH_API_KEY}`
The plugin path is more suitable for using “dubbing a local file or direct media link” as a task tool; the MCP path exposes the same service as an MCP server.
Pricing & Limits¶
Verified service limits are as follows:
- Price:
$0.50per1minute of media - Max single file
60minutes - Max single file
2 GB - Download link validity
48hours - After a download link expires, you can call
dub_statusagain to get a new link
When the balance is empty, the tool will return insufficient_balance along with a top-up URL.
Security & Runtime Notes¶
When using this plugin, be aware of the scope of file reading and network access.
- When
sourceis a local path, the plugin reads that file; otherwise, it does not read other local files. - Network access is limited to
baseUrland the returned presigned storage target. - The API key is sent to
baseUrlas anAuthorizationheader and does not appear in tool results. - However, tool parameters are written to the session log, so do not paste the API key into the prompt.
- The key is only used for dubbing-related endpoints and cannot be used to issue more keys.
sourceonly accepts local file paths or direct media URLs; URLs for YouTube, Bilibili, social posts, etc., are not media files and will be rejected.
The plugin runs with the permissions of the current dsh process. It is recommended to check the source code, license, and dependencies before installation.
Runtime dependencies are as follows:
Node: ^22.19.0 || >=24.0.0
peerDependencies:
@deepseek-ai/cordis ^4.0.1-rc.1
@deepseek-ai/dsh-tools ^0.0.1-rc.1
Use Cases¶
This plugin is suitable for the following scenarios:
- Need to translate local video or audio files into another language
- Need to preserve the original speaker’s voice
- Want to complete dubbing with a single tool call in a DSH workflow
- Source file is a local path or direct media URL
- Can accept pay-per-media-length billing, and the file does not exceed
60minutes or2 GB
If the source is a web link, a social platform link, or requires manual uploading to a web app, this plugin does not scrape page content and does not process non-media URLs.
Links¶
- GitHub repository: pinch-eng/dsh-audio-dub
- Directory page: The specific URL is not provided in verified materials; search for
pinch-eng/dsh-audio-dubin the DSH community directory.