{"_id":"@absolutejs/voice-openai-whisper","_rev":"6-4ed5dcf29fef2349a8d1e583c0ef4b54","name":"@absolutejs/voice-openai-whisper","dist-tags":{"latest":"0.0.1-beta.6","beta":"0.0.1-beta.6"},"versions":{"0.0.1-beta.1":{"name":"@absolutejs/voice-openai-whisper","version":"0.0.1-beta.1","author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"b48394d230d406f22896356d5373ec5bf110f9a6","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.1.tgz","fileCount":5,"integrity":"sha512-X/bih8F7HhUvCA1dcNqVmMLa9k8a1PANiQAIFsISgig2RZw3ixbBD38e0VFJQnl/S3Kcl7vc6A3E3SxphEuaSA==","signatures":[{"sig":"MEYCIQCVO3gxE9vEZ52PE57qFtNm0he3HPKXYIT7HQMqZkWE5QIhAL2B9Rw7tircq+wqt8I3bMfvUN2zKx5DXuyr0daOxERZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10173},"main":"./dist/index.js","types":"./dist/index.d.ts","shasum":"b48394d230d406f22896356d5373ec5bf110f9a6","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts --outdir dist --target bun --external @absolutejs/voice && tsc --emitDeclarationOnly --project tsconfig.json","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run format && bun run build && bun publish --access public","typecheck":"bun run tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-X/bih8F7HhUvCA1dcNqVmMLa9k8a1PANiQAIFsISgig2RZw3ixbBD38e0VFJQnl/S3Kcl7vc6A3E3SxphEuaSA==","repository":{"url":"https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.8.3","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/voice":"0.0.22-beta.471"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.9","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-openai-whisper_0.0.1-beta.1_1779159718145_0.2592350485138233","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.2":{"name":"@absolutejs/voice-openai-whisper","version":"0.0.1-beta.2","author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"f68cc879365a4b4591bf776ee41cedf30b2f2c00","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.2.tgz","fileCount":5,"integrity":"sha512-aRWt3AjdYJCaaUDsXPHCT1ndZkY0p2s7DwpY5n6UDeEqC9wxGh3SsFQuq/qDnMDKNmMFnIkoDqCINs2utRWJ0A==","signatures":[{"sig":"MEUCIQC0jKbqlYphPMwJWX4Bm+L5M8JxyO5Non1q+nSEPhHJfgIgQI9+YQi+9WnzstedXjjTHTA1tuu6SmE14IMALNYcwGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10173},"main":"./dist/index.js","types":"./dist/index.d.ts","shasum":"f68cc879365a4b4591bf776ee41cedf30b2f2c00","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts --outdir dist --target bun --external @absolutejs/voice && tsc --emitDeclarationOnly --project tsconfig.json","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run format && bun run build && bun publish --access public","typecheck":"bun run tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-aRWt3AjdYJCaaUDsXPHCT1ndZkY0p2s7DwpY5n6UDeEqC9wxGh3SsFQuq/qDnMDKNmMFnIkoDqCINs2utRWJ0A==","repository":{"url":"https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.8.3","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/voice":"0.0.22-beta.474"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.9","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-openai-whisper_0.0.1-beta.2_1780071616651_0.5803867678008512","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.3":{"name":"@absolutejs/voice-openai-whisper","version":"0.0.1-beta.3","author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/voice-adapters/tree/main/openai-whisper","bugs":{"url":"https://github.com/absolutejs/voice-adapters/issues"},"dist":{"shasum":"7f32d881b623c96fca2f2dba230079ca35021078","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.3.tgz","fileCount":8,"integrity":"sha512-6/vISrsgJm8IkMUGLWYpsEGP2UXUMHhSm8k8ELxvgIwP5N8/ILGnffvxZrLn9tO+mBR+g6H6mYfxkN/yywBr2w==","signatures":[{"sig":"MEYCIQDQqEZ/RG53hmaVOInBHxT12BSYM3R7DxCYoPTbLHC9BgIhALDJ9rvGBXgKLvmJvpox6wI+vl3QTbv57JkJ/kMlA+6u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371728},"main":"./dist/index.js","types":"./dist/index.d.ts","shasum":"7f32d881b623c96fca2f2dba230079ca35021078","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/manifest.ts --outdir dist --target bun --external @absolutejs/voice && tsc --emitDeclarationOnly --project tsconfig.json && absolute-manifest emit","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run format && bun run build && bun publish --access public","typecheck":"bun run tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-6/vISrsgJm8IkMUGLWYpsEGP2UXUMHhSm8k8ELxvgIwP5N8/ILGnffvxZrLn9tO+mBR+g6H6mYfxkN/yywBr2w==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.8.3","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@absolutejs/voice":"0.0.22-beta.474","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.9","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-openai-whisper_0.0.1-beta.3_1783965901246_0.05445653280936402","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.4":{"name":"@absolutejs/voice-openai-whisper","version":"0.0.1-beta.4","author":{"name":"Alex Kahn"},"license":"CC BY-NC 4.0","_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/voice-adapters/tree/main/openai-whisper","bugs":{"url":"https://github.com/absolutejs/voice-adapters/issues"},"dist":{"shasum":"758e96753afab51164fda928c0f7cacdacf7c0ca","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.4.tgz","fileCount":8,"integrity":"sha512-JSqsRGKvsetOysT5b0JPnXbG3xEmGO6y7BGz3oLoIULQX+C8Tj5ivBRJ6vnr6pswoLlFN7YxTP8/t+YaFwNdkQ==","signatures":[{"sig":"MEQCIFUWfIDLQl+i7NziD8E1AZutAIpBrBBqVidnESzDxDZiAiBODoOaN+15feyAbJB9qlJSw5VMrsCGqBpklEA0EQdOUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371803},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"8391bef9be3b92ab92e1a26d31a426d1498f281d","scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/manifest.ts --outdir dist --target bun --external @absolutejs/voice && tsc --emitDeclarationOnly --project tsconfig.json && absolute-manifest emit","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run format && bun run build && bun publish --access public","typecheck":"bun run tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":1},"repository":{"url":"git+https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.9.2","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.9","typescript":"^5.9.3","@absolutejs/voice":"0.0.22-beta.644"},"peerDependencies":{"@absolutejs/voice":">=0.0.22-beta.644 <0.1"},"_npmOperationalInternal":{"tmp":"tmp/voice-openai-whisper_0.0.1-beta.4_1784799906166_0.5783776941568302","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.5":{"name":"@absolutejs/voice-openai-whisper","version":"0.0.1-beta.5","author":{"name":"Alex Kahn"},"license":"CC BY-NC 4.0","_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/voice-adapters/tree/main/openai-whisper","bugs":{"url":"https://github.com/absolutejs/voice-adapters/issues"},"dist":{"shasum":"8b8951fed865b6e429ffcedab314944282b17a48","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.5.tgz","fileCount":8,"integrity":"sha512-OgErSdxbI9MKh7GXXhbXPFd2s4ijXYK2ikjBH9Vp4+m+JotDJtysSVEu6oVf3ywSXyebtga3VF2l1wpx43mqwg==","signatures":[{"sig":"MEUCIQDmnLs2QkuqhkXRWCLblAJ74YfKATnpvgJs5K5LBN+5zAIgc29Dq5LAjGcRgODmp7J55fR0wbCX+JX80OaX8fAzLxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15612},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"38feec54c1701404748a918264ad85545687ac03","scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/manifest.ts --outdir dist --target bun --external @absolutejs/manifest --external '@absolutejs/manifest/*' --external @absolutejs/voice --external '@absolutejs/voice/*' --external @sinclair/typebox --external '@sinclair/typebox/*' && tsc --emitDeclarationOnly --project tsconfig.json && absolute-manifest emit","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run check:package && npm publish --access public --tag beta","typecheck":"bun run tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"runtimePeers":{"@absolutejs/voice":{"range":">=0.0.22-beta.647 <0.1","tested":"0.0.22-beta.647","optional":false,"buildExternals":["@absolutejs/voice","@absolutejs/voice/*"],"artifactImports":[]}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.9.2","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"0.34.52","@absolutejs/manifest":"0.7.2"},"_hasShrinkwrap":false,"devDependencies":{"elysia":"1.4.29","prettier":"3.9.6","@types/bun":"1.3.14","typescript":"^5.9.3","@absolutejs/voice":"0.0.22-beta.647"},"peerDependencies":{"@absolutejs/voice":">=0.0.22-beta.647 <0.1"},"_npmOperationalInternal":{"tmp":"tmp/voice-openai-whisper_0.0.1-beta.5_1784968251217_0.0409214223773291","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.6":{"_id":"@absolutejs/voice-openai-whisper@0.0.1-beta.6","bugs":{"url":"https://github.com/absolutejs/voice-adapters/issues"},"dist":{"shasum":"71fc00bfd174302c544ffec24e0ea7b7b0f31e61","tarball":"https://registry.npmjs.org/@absolutejs/voice-openai-whisper/-/voice-openai-whisper-0.0.1-beta.6.tgz","fileCount":10,"integrity":"sha512-tHwNI/60SsvNcy5+R02qgLJAk+U005wAmS+6u03pq9VVnD/GXeBYfyOA+upS6G4BgJbAx097VhbXi3HzkYswHA==","signatures":[{"sig":"MEUCIQCnlcjwNh2d6kNQcSR9VLzib8R5ihRXmy+/oY7Ck83/dAIgG0lc4d+jcCKBgGdDHWEdICa+X+0kRGRPCUPHT/zuwdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDLqAVM/krOHGKZABGkHG56HoRAijoXeV5AQmJvJOTbRAIhAI8t2yxps6TcFd6v3rVkt+M+NBMZvLosPi+xVPMtAvZz"}],"unpackedSize":29245},"main":"./dist/index.js","name":"@absolutejs/voice-openai-whisper","types":"./dist/index.d.ts","author":{"name":"Alex Kahn"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"license":"Apache-2.0","scripts":{"test":"bun test","build":"rm -rf dist && bun build ./src/index.ts ./src/manifest.ts --outdir dist --target bun --external @absolutejs/manifest --external '@absolutejs/manifest/*' --external @absolutejs/voice --external '@absolutejs/voice/*' --external @sinclair/typebox --external '@sinclair/typebox/*' && tsc --emitDeclarationOnly --project tsconfig.json && absolute-manifest emit","format":"prettier --write \"./**/*.{js,ts,json,md}\"","release":"bun run check:package && npm publish --access public --tag beta","typecheck":"bun run tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts","verify-package":"absolute-manifest verify-package"},"version":"0.0.1-beta.6","_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"homepage":"https://github.com/absolutejs/voice-adapters/tree/main/openai-whisper","absolutejs":{"runtimePeers":{"@absolutejs/voice":{"range":">=0.0.22-beta.647 <0.1","tested":"0.0.22-beta.647","optional":false,"buildExternals":["@absolutejs/voice","@absolutejs/voice/*"],"artifactImports":[]}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"_npmVersion":"10.9.2","description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"0.34.52","@absolutejs/manifest":"0.7.2"},"_hasShrinkwrap":false,"devDependencies":{"elysia":"1.4.29","prettier":"3.9.6","@types/bun":"1.3.14","typescript":"^5.9.3","@absolutejs/voice":"0.0.22-beta.647"},"peerDependencies":{"@absolutejs/voice":">=0.0.22-beta.647 <0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/voice-openai-whisper_0.0.1-beta.6_1790457669774_0.42675046017323415"}}},"time":{"created":"2026-05-19T03:01:58.034Z","modified":"2026-09-26T21:21:10.072Z","0.0.1-beta.1":"2026-05-19T03:01:58.286Z","0.0.1-beta.2":"2026-05-29T16:20:16.781Z","0.0.1-beta.3":"2026-07-13T18:05:01.407Z","0.0.1-beta.4":"2026-07-23T09:45:06.362Z","0.0.1-beta.5":"2026-07-25T08:30:51.386Z","0.0.1-beta.6":"2026-09-26T21:21:09.862Z"},"bugs":{"url":"https://github.com/absolutejs/voice-adapters/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/voice-adapters/tree/main/openai-whisper","repository":{"url":"git+https://github.com/absolutejs/voice-adapters.git","type":"git","directory":"openai-whisper"},"description":"OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# `@absolutejs/voice-openai-whisper`\n\nBuffered OpenAI transcription adapter for `@absolutejs/voice`. It collects raw\naudio for a turn, wraps PCM input in a WAV container, and sends one transcription\nrequest when you flush or close the session.\n\n## Install\n\n```bash\nbun add @absolutejs/voice @absolutejs/voice-openai-whisper\n```\n\n## Setup\n\n```ts\nimport { openaiWhisper } from \"@absolutejs/voice-openai-whisper\";\n\nconst stt = openaiWhisper({\n  apiKey: process.env.OPENAI_API_KEY!,\n  model: \"gpt-4o-mini-transcribe\",\n  language: \"en\",\n});\n\nconst session = stt.open({\n  format: {\n    channels: 1,\n    encoding: \"pcm_s16le\",\n    sampleRateHz: 16_000,\n  },\n});\n\nsession.on(\"final\", ({ transcript }) => {\n  console.log(transcript.text);\n});\n\nawait session.send(audioChunk);\nawait session.flush();\nawait session.close(\"turn-complete\");\n```\n\n## Buffering behavior\n\nThis is a batch adapter, not a realtime streaming transport. `send()` appends\naudio to the current turn. `flush()` transcribes the accumulated buffer and emits\n`final` followed by `endOfTurn`. Closing flushes by default; set\n`flushOnClose: false` when the caller owns that lifecycle explicitly.\n\nThe default buffer ceiling is 20 MiB. Set `maxBufferedBytes` to a lower bound for\nlatency or memory control, and flush between turns. Exceeding the bound throws\nbefore more audio is retained.\n\n## Options\n\n- `apiKey` — required OpenAI API key.\n- `model` — defaults to `whisper-1`; transcription models are accepted.\n- `language` — optional language hint; fixed language strategies from voice core\n  take precedence.\n- `prompt`, `temperature`, and `responseFormat` — forwarded to the transcription\n  endpoint.\n- `organization` — sends the `OpenAI-Organization` header.\n- `baseUrl` — targets an OpenAI-compatible endpoint.\n- `fetch` — injects a custom fetch implementation for policy, tracing, or tests.\n- `flushOnClose` and `maxBufferedBytes` — control buffering lifecycle.\n\n## Errors and events\n\nHTTP failures and malformed provider responses emit a non-recoverable `error`.\nSuccessful responses emit normalized `final` and `endOfTurn` events through the\nstandard `@absolutejs/voice` `STTAdapter` contract. The adapter does not emit\npartial transcripts because the provider request happens only at flush time.\n","readmeFilename":"README.md"}