pinch-eng / dsh-audio-dub

목록에 있음

Dub video and audio into 10 languages with voice cloning, from a DeepSeek Harness agent | DSH 视频/音频配音插件

main기타 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:pinch-eng/dsh-audio-dub

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 2d97580동기화 2026. 8. 18.

dsh-audio-dub

中文

DSH dubbing plugin — dub a video or audio file into another language while keeping the original speaker's voice (AI voice cloning). Turn a Chinese video into an English one in a single tool call, or the other way round.

License topic

You:   dub ./demo.mp4 into English
Agent: [dub_media] Job 8f3a… — completed
       zh → en · duration 154s · cost $1.28
       Download: https://…/dubbed.mp4

Motivation

Agents handle text translation well, but "make an English version of this video" falls outside the toolchain: either you upload it to a web app by hand, or you wire up ffmpeg + ASR + translation + TTS + alignment yourself.

This plugin collapses that into one tool call: give it a local path or a direct media URL, get back a finished dub. Transcription, translation, voice cloning and timing all happen server-side; the agent just waits for the result.

Install

Install into your profile (headless here; web / tui work the same way):

dsh plugin --profile headless add github:pinch-eng/dsh-audio-dub

It registers itself on install — no cordis.yml edit needed. Then set an API key (create one at portal.startpinch.com; it looks like pk_…):

export PINCH_API_KEY=pk_xxx

Try it:

dsh --profile headless "dub ./demo.mp4 into English"

Config

FieldTypeDefaultDescription
apiKeystringprocess.env.PINCH_API_KEYAPI key. Prefer the environment variable over writing it into cordis.yml
baseUrlstringhttps://portal.startpinch.comOverride for self-hosted or staging
pollIntervalMsinteger15000Status poll interval while waiting; floor 5000

Tools

dub_media

ParameterTypeRequiredDescription
sourcestringLocal file path (./talk.mp4) or a direct link to a media file. Page URLs (YouTube, Bilibili, social posts) are not media files and are rejected
target_langstringLanguage to dub into — see the table below
source_langstringSpoken language of the source. Default auto
reduce_accentbooleanMore native-sounding target pronunciation, at a small cost to voice similarity. Leave unset for the service default
waitbooleanWait for the result. Default true
wait_secondsintegerWait budget; default 600, max 1800. Rule of thumb: allow 1–2× the media duration

Local files are streamed to a presigned upload target before the job is submitted — a 2 GB mp4 never lands in memory.

Running out of wait budget is not a failure: the job continues server-side, and the returned job_id can be handed to dub_status.

dub_status

ParameterTypeRequiredDescription
job_idstringJob id returned by dub_media
waitbooleanWait for completion instead of returning the current status. Default false
wait_secondsintegerAs above

dub_languages

No parameters. Local lookup — no network call, no cost.

Supported languages

CodeLanguageCodeLanguage
zhChineseptPortuguese
enEnglishruRussian
esSpanishjaJapanese
frFrenchkoKorean
deGermanitItalian

The source language may additionally be auto.

Pricing and limits

  • $0.50 per minute of media
  • Max 60 minutes and 2 GB per file
  • Download links are valid for 48 hours; call dub_status again for a fresh one

On an empty balance the tool returns insufficient_balance together with the top-up URL, so the agent can tell you exactly what to do.

Security model

  • The API key is sent as an Authorization header to baseUrl and never appears in a tool result — but tool arguments are written to the session log, so don't paste keys into prompts. A key reaches dubbing endpoints only; it cannot mint further keys.
  • Reads the file at source when it's a local path, and nothing else. Network access is limited to baseUrl and the presigned storage target it hands back.

Or use MCP

If you'd rather not install a plugin, the same service is available as a 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 difference: MCP exposes the full API surface (uploads, subtitles, balance, job listing), which is more tools and finer grained. This plugin is three task-shaped tools with direct local-file upload and results trimmed for the model. Use the plugin for everyday dubbing, MCP when you need the whole API.

Development

npm install
npm run check   # typecheck + test + build

Documentation

Full parameter reference, language support and API details: startpinch.com/docs

License

MIT

프로젝트 파일 및 신호

표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.

테스트감지됨

저장소 정보

언어
TypeScript
라이선스
MIT
마지막 업데이트
2026. 8. 13. 오후 8:05

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.