{"_id":"@botrun/mcp-audio-to-text","_rev":"9-dcbc3d3d1267fbd5beb2888f7ee52bad","name":"@botrun/mcp-audio-to-text","dist-tags":{"latest":"2.2.0"},"versions":{"1.4.0":{"name":"@botrun/mcp-audio-to-text","version":"1.4.0","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.4.0","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"c6c284b799627a1b5242af9e5aaa6c533731c74a","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.4.0.tgz","fileCount":12,"integrity":"sha512-iZYajZv/39DAOYuIhRHhyO1YypRAhvLI53GEJw/hTffIqGXoq1AlCUQv7597waqdQP5foV+8gS4PgmoF9rI9pg==","signatures":[{"sig":"MEUCIQDHW00OcgOre6Jb20JZZDDcZMk5ddphxQX4xtWLuWxsXAIgTEo0eof6BTqd8j8ApJCD12INRKygnrXAcbBRP+EDEpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30739},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"4248ca8edeb2b7b4526273761910ca15be548263","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"10.9.2","description":"MCP Server for audio/video to text transcription using Google Gemini","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","@google/genai":"^1.0.0","fluent-ffmpeg":"^2.1.3","zod-to-json-schema":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@types/node":"^22.10.1","@types/fluent-ffmpeg":"^2.1.27"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.4.0_1769397561949_0.4223938658597821","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@botrun/mcp-audio-to-text","version":"1.4.1","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.4.1","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"eb36df1a9777e8dc661f2a112dcb19e9b2e51e0a","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.4.1.tgz","fileCount":12,"integrity":"sha512-yy6axm050TqPSG80eII3MyU6qoSF+Q8RyC6MkS00yDbln1CmxKA0pXgKuSTQOHpQVJjvVl4FcT0RK5EIdNzhqA==","signatures":[{"sig":"MEUCIQD2fXm6asHVUp7xAAwLdGSvScp/CVbsm53UMoU9v/oaZgIgBaqhK1MnHBndx6jyVAZo/5wGuSSIzoY7qic2zZ8CWxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30765},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"19d9177a12d7546c81ec177fc11293e9a27ef155","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"10.9.2","description":"MCP Server for audio/video to text transcription using Google Gemini","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","@google/genai":"^1.0.0","fluent-ffmpeg":"^2.1.3","zod-to-json-schema":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@types/node":"^22.10.1","@types/fluent-ffmpeg":"^2.1.27"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.4.1_1771986526230_0.5173345949789767","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@botrun/mcp-audio-to-text","version":"1.5.0","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.5.0","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"1817d77650fc239b103e24bf5727eecfa6bd57c3","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.5.0.tgz","fileCount":12,"integrity":"sha512-4phPobrnDlHpmiY3DUO5jsGoAbfzZECY9fokYqtsyL/by8HzKVxp9x3+MfJ2S7WP62HS+MJ/K6JfcgcwdVYe4w==","signatures":[{"sig":"MEUCIQD1k+pHxi4rLOCaZaHGw/hsMESLJHu5NIvPicB/nTJ7hQIgV5tZoJSkC5cL1c8wzAaY7np8X5robUItcisNnbyuLts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30393},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"64e4e25e6f37f2e5a2740d94e51ec3d2b8d8f117","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"10.9.2","description":"MCP Server for audio/video to text transcription using Google Gemini","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","@google/genai":"^1.0.0","fluent-ffmpeg":"^2.1.3","zod-to-json-schema":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@types/node":"^22.10.1","@types/fluent-ffmpeg":"^2.1.27"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.5.0_1773207138196_0.3429853609656155","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@botrun/mcp-audio-to-text","version":"1.5.1","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.5.1","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"92896e82107646bdc455ce3ca9a829cb5b6ae932","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.5.1.tgz","fileCount":12,"integrity":"sha512-Uq+lz2wkb1/8IJldTxBXTnFewxsQUTIM/361jXneyRRpdgKBntF4CRvCxUwUIJsgPEF/qs4PIB+gi+DbcogQcA==","signatures":[{"sig":"MEUCIDp3C5P1fAPVHCq7hp0VDxEyW/uvpS5js5GQV04VrwmGAiEA48B1CpbxPeNc3fMZPV8UBxX79BiTe24ajFq4ClZe8xc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30482},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e75d482325e77806136af5520909ad53fe8b1f70","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"11.11.0","description":"MCP Server for audio/video to text transcription using Google Gemini","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"3.25.76","dotenv":"16.6.1","@google/genai":"1.34.0","fluent-ffmpeg":"2.1.3","zod-to-json-schema":"3.25.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"22.19.1","@types/fluent-ffmpeg":"2.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.5.1_1775097481230_0.20021567691405107","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@botrun/mcp-audio-to-text","version":"1.6.0","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.6.0","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"026d92d65d5389f4b14fa64a4b64f61112999475","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.6.0.tgz","fileCount":18,"integrity":"sha512-QSNdROr2EGEwzsCh4UBRpqechRB0N9CWQV2lEsM4AptotBUG61IonGFMQFc1aNL9t9bapdo9YoUL+8cfumuZ/Q==","signatures":[{"sig":"MEUCIQCbXrDfhY/pA/YLp5M3atRmTQRU9SxEeP0Di+VTEirlUwIgKFII9ISmodfx5/LoRsEDeYwgi+uNrPgyOptd0qXuLmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44829},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f76cb0f08fb2836aee3adabbda160b816bef0643","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"11.11.0","description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"3.25.76","dotenv":"16.6.1","@google/genai":"1.34.0","fluent-ffmpeg":"2.1.3","zod-to-json-schema":"3.25.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"22.19.1","@types/fluent-ffmpeg":"2.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.6.0_1777012637671_0.07758136733362764","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@botrun/mcp-audio-to-text","version":"1.6.1","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@1.6.1","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"91420483352cc518df22cf83d15c3d275412872a","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-1.6.1.tgz","fileCount":18,"integrity":"sha512-qG/OIWTXm+erqBtr172gERmaj0GU6+wjNFGcy164J+op5PiOniEMXWuS0U0FiM7XKqOqtGJ8a3arK3RUVWaARQ==","signatures":[{"sig":"MEUCIQCDE8qx7Qu2rjwSOHeMQ5ucnDjnaB816jiqUmVJnlyxEQIgC1z5DJMSvXo8dLDdOvQZLaBC66lzD43C6UykcOKeU1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46313},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"806a754f72d7bd8d99cbbfd5e2456a07e364c991","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"11.12.1","description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"3.25.76","dotenv":"16.6.1","@google/genai":"1.34.0","fluent-ffmpeg":"2.1.3","zod-to-json-schema":"3.25.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"22.19.1","@types/fluent-ffmpeg":"2.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_1.6.1_1778245503501_0.28018027679602797","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@botrun/mcp-audio-to-text","version":"2.0.0","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@2.0.0","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"26a80b1607380e67c16ba5e510b48737dd8a285b","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-2.0.0.tgz","fileCount":18,"integrity":"sha512-jmuLdxI4x2hm/SXD/eii1kkfB75srdOsbbe2KoiR+az4+gS68N//7bisrBLbDg5pHykoV+wUpX/7qLWQBYQolQ==","signatures":[{"sig":"MEQCIA0vTvp5+oY7yLBswKdw7cODnPnq1v9ePEhs8o+KJ4yNAiAlNLfuioScxXZExvC6I0EV3mtIsys3rCd8YSioTsZSOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49317},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"3b012d545a683bc99e2b36a21bf2d3e1f7992d8c","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"11.12.1","description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"3.25.76","dotenv":"16.6.1","@google/genai":"1.34.0","fluent-ffmpeg":"2.1.3","zod-to-json-schema":"3.25.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"22.19.1","@types/fluent-ffmpeg":"2.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_2.0.0_1782744629967_0.9751809224097165","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@botrun/mcp-audio-to-text","version":"2.1.0","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","_id":"@botrun/mcp-audio-to-text@2.1.0","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"bin":{"mcp-audio-to-text":"dist/index.js"},"dist":{"shasum":"9122ebcd49ad35c934e3e5a0608639f8d541e9ae","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-2.1.0.tgz","fileCount":18,"integrity":"sha512-sCpThDCGvy0zWWH2QzpqCQ4+AbBqirPizE9wIiG6+pQy7alYHv33YlfsQtfbwmu44NWhraUfl5TLjrwHpnMs9w==","signatures":[{"sig":"MEUCIQCvRypHuNBYCFxmRkLroM2jFyurU5bGMi4Xpd6ETJi1ZQIgVqDly7/Ulf6WdsoMpNR4fK/yj4LXcpwaej/p1DQnVXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54184},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b8c54a4c15f3a9ecba7745b8f0129da3c0d25f47","scripts":{"dev":"tsc --watch","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"_npmVersion":"11.12.1","description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"3.25.76","dotenv":"16.6.1","@google/genai":"1.34.0","fluent-ffmpeg":"2.1.3","zod-to-json-schema":"3.25.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"22.19.1","@types/fluent-ffmpeg":"2.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-audio-to-text_2.1.0_1782866752446_0.13897154173569648","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@botrun/mcp-audio-to-text","version":"2.2.0","description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","type":"module","main":"dist/index.js","bin":{"mcp-audio-to-text":"dist/index.js"},"scripts":{"build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","dev":"tsc --watch","inspect":"npx @modelcontextprotocol/inspector node dist/index.js"},"keywords":["mcp","audio","transcription","speech-to-text","gemini"],"license":"MIT","dependencies":{"@google/genai":"1.34.0","dotenv":"16.6.1","@modelcontextprotocol/sdk":"1.29.0","fluent-ffmpeg":"2.1.3","zod":"3.25.76","zod-to-json-schema":"3.25.2"},"devDependencies":{"@types/fluent-ffmpeg":"2.1.28","@types/node":"22.19.1","typescript":"5.9.3"},"gitHead":"dfbe3d66b1579e4a35e317d55107042fc7e1996c","types":"./dist/index.d.ts","_id":"@botrun/mcp-audio-to-text@2.2.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-8QFzeMJjqZR0+kpruMPJtosu+m2bA6HM+IuY2bDlzfkqELWL9u22ysVskDZUCg0jIZiZkufXyDwciWC5dqPqtw==","shasum":"db1eb9f1227b09098a538e5a630e1fdb58f36af1","tarball":"https://registry.npmjs.org/@botrun/mcp-audio-to-text/-/mcp-audio-to-text-2.2.0.tgz","fileCount":18,"unpackedSize":57751,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBB3nDbD6BhVfCGTF4o11mGLfr+/V/6fRbnSmZ8eIh77AiBBLUd+hxKoT6w8LaysPEAjURgGOV0+lcKxilInPUtaew=="}]},"_npmUser":{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},"directories":{},"maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-audio-to-text_2.2.0_1785932296387_0.6033345971760042"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-26T03:19:21.873Z","modified":"2026-08-05T12:18:16.799Z","1.4.0":"2026-01-26T03:19:22.102Z","1.4.1":"2026-02-25T02:28:46.376Z","1.5.0":"2026-03-11T05:32:18.336Z","1.5.1":"2026-04-02T02:38:01.363Z","1.6.0":"2026-04-24T06:37:17.820Z","1.6.1":"2026-05-08T13:05:03.645Z","2.0.0":"2026-06-29T14:50:30.105Z","2.1.0":"2026-07-01T00:45:52.642Z","2.2.0":"2026-08-05T12:18:16.516Z"},"license":"MIT","keywords":["mcp","audio","transcription","speech-to-text","gemini"],"description":"MCP Server for audio/video to text transcription using Google Gemini or NCHC TAIDE Whisper","maintainers":[{"name":"aidoer","email":"aidoer@hotmail.com"},{"name":"bigcookie","email":"bigcookie.lee@cameo.tw"},{"name":"hsiehchenwei","email":"Hsiehchenwei@gmail.com"}],"readme":"# MCP Audio to Text\r\n\r\n一個用於語音轉文字的 MCP Server，支援 Google Gemini 與 NCHC TAIDE Whisper 作為轉錄 provider。\r\n\r\n> **所有 LLM 流量改走 botrun-gate gateway。** 因 Gemini 金鑰外洩，本專案不再直連任何 LLM 供應商、也不再持有真實的 Gemini / NCHC 金鑰；兩個 provider 一律透過 gateway 串接，只需設定 `BOTRUN_GATE_BASE_URL` 與 `BOTRUN_GATE_API_KEY`（一把 `br-` key 共用）。\r\n\r\n## 功能特色\r\n\r\n- 支援多種音頻/影片格式：`.mp3`, `.m4a`, `.wav`, `.mp4`, `.webm`, `.ogg`, `.flac` 等\r\n- 自動處理大檔案分割（超過 20MB 或 3 分鐘）\r\n- 中文自動轉為繁體中文\r\n- 可選擇模型（依 provider 而異；詳見下方 MCP Tool 區塊）\r\n\r\n## 系統需求\r\n\r\n- Node.js 18+\r\n- ffmpeg（系統層級安裝）\r\n- botrun-gate gateway 的 `BOTRUN_GATE_BASE_URL` 與 `BOTRUN_GATE_API_KEY`（兩個 provider 皆需，共用同一把 `br-` key）\r\n\r\n### 安裝 ffmpeg\r\n\r\n```bash\r\n# Ubuntu/Debian\r\nsudo apt install ffmpeg\r\n\r\n# macOS\r\nbrew install ffmpeg\r\n\r\n# Windows\r\n# 下載 https://ffmpeg.org/download.html 並加到 PATH\r\n```\r\n\r\n## 使用方式\r\n\r\n### Claude Desktop 設定\r\n\r\n編輯設定檔：\r\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\r\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\r\n\r\n使用 **Google Gemini**（預設）：\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"audio-to-text\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@botrun/mcp-audio-to-text\"],\r\n      \"env\": {\r\n        \"BOTRUN_GATE_BASE_URL\": \"https://your-botrun-gate-host\",\r\n        \"BOTRUN_GATE_API_KEY\": \"br-xxxxxxxx\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n使用 **NCHC TAIDE Whisper**（需設定 `TRANSCRIBER_PROVIDER=nchc`，同樣走 gateway）：\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"audio-to-text\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@botrun/mcp-audio-to-text\"],\r\n      \"env\": {\r\n        \"TRANSCRIBER_PROVIDER\": \"nchc\",\r\n        \"BOTRUN_GATE_BASE_URL\": \"https://your-botrun-gate-host\",\r\n        \"BOTRUN_GATE_API_KEY\": \"br-xxxxxxxx\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Claude CLI 設定\r\n\r\n```bash\r\nclaude mcp add audio-to-text \\\r\n  -e BOTRUN_GATE_BASE_URL=https://your-botrun-gate-host \\\r\n  -e BOTRUN_GATE_API_KEY=br-xxxxxxxx \\\r\n  -- npx -y @botrun/mcp-audio-to-text\r\n```\r\n\r\n## MCP Tool\r\n\r\n### transcribe_audio\r\n\r\n將音頻或影片檔案轉換為文字。\r\n\r\n**參數依 `TRANSCRIBER_PROVIDER` 而異**：\r\n\r\n#### Gemini 模式（預設）\r\n\r\n| 參數 | 類型 | 必填 | 說明 |\r\n|------|------|------|------|\r\n| `file_path` | string | 是 | 音頻或影片檔案的絕對路徑 |\r\n| `output_dir` | string | 是 | 輸出目錄路徑 |\r\n| `model` | string | 否 | `flash`（較快）或 `pro`（較準確）。未傳時用 `TRANSCRIBE_DEFAULT_MODEL`，再未設則為 `flash` |\r\n| `custom_model` | string | 否 | 自訂 Gemini 模型名稱（僅支援 gemini 開頭，優先於 `model`） |\r\n\r\n#### NCHC 模式\r\n\r\n| 參數 | 類型 | 必填 | 說明 |\r\n|------|------|------|------|\r\n| `file_path` | string | 是 | 音頻或影片檔案的絕對路徑 |\r\n| `output_dir` | string | 是 | 輸出目錄路徑 |\r\n| `model` | string | 否 | `whisper-Breeze-ASR-25` 或 `Whisper-Large-V3`。未傳時用 `TRANSCRIBE_DEFAULT_MODEL`，再未設則為 `whisper-Breeze-ASR-25` |\r\n\r\n## 環境變數\r\n\r\n| 變數 | 說明 | 必要性 |\r\n|------|------|--------|\r\n| `TRANSCRIBER_PROVIDER` | `gemini`（預設）或 `nchc` | 選配 |\r\n| `TRANSCRIBE_DEFAULT_MODEL` | 部署期預設模型（見下方說明） | 選配 |\r\n| `BOTRUN_GATE_BASE_URL` | botrun-gate gateway base URL（兩個 provider 共用） | gateway 模式**必要** |\r\n| `BOTRUN_GATE_API_KEY` | gateway `br-` API key（兩個 provider 共用一把） | gateway 模式**必要** |\r\n| `GEMINI_API_KEY` / `GOOGLE_API_KEY` | 直連 Gemini 用（僅在未設 `BOTRUN_GATE_*` 時生效） | gemini 直連時必要 |\r\n| `TAIDE_BASE_URL` / `TAIDE_API_KEY` | 直連 NCHC 用（僅在未設 `BOTRUN_GATE_*` 時生效） | nchc 直連時必要 |\r\n\r\n連線一律 **gateway 優先**：`BOTRUN_GATE_BASE_URL` + `BOTRUN_GATE_API_KEY` 兩個都有值就走 gateway，此時直連金鑰被忽略；否則才走直連。兩者皆不全 → 啟動轉錄時丟錯（症狀是 tool 沒有回傳結果）。\r\n\r\n### TRANSCRIBE_DEFAULT_MODEL\r\n\r\n指定 agent 沒帶 `model` 參數時要用的模型。**agent 明確傳的 `model` / `custom_model` 一律優先**，此變數只是 fallback。\r\n\r\n有效值依 provider 而定，設錯值 server 會在啟動時就報錯：\r\n\r\n- `gemini`：`flash`、`pro`，或任何 `gemini` 開頭的完整模型名（例如 `gemini-2.5-flash`）\r\n- `nchc`：`whisper-Breeze-ASR-25`、`Whisper-Large-V3`\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"audio-to-text\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@botrun/mcp-audio-to-text\"],\r\n      \"env\": {\r\n        \"TRANSCRIBE_DEFAULT_MODEL\": \"gemini-2.5-flash\",\r\n        \"BOTRUN_GATE_BASE_URL\": \"https://your-botrun-gate-host\",\r\n        \"BOTRUN_GATE_API_KEY\": \"br-xxxxxxxx\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}