{"_id":"@caleblawson/voice-openai","name":"@caleblawson/voice-openai","dist-tags":{"latest":"0.10.3"},"versions":{"0.10.3":{"name":"@caleblawson/voice-openai","version":"0.10.3","description":"Mastra OpenAI speech integration","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"license":"Elastic-2.0","dependencies":{"openai":"^4.104.0","zod":"^3.25.57"},"devDependencies":{"@microsoft/api-extractor":"^7.52.8","@types/node":"^20.19.0","eslint":"^9.28.0","tsup":"^8.5.0","typescript":"^5.8.3","vitest":"^2.1.9","@internal/lint":"0.0.13","@mastra/core":"npm:@caleblawson/core@0.10.7-alpha.0"},"peerDependencies":{"@mastra/core":"^0.10.0-alpha.0"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake=smallest --splitting","build:watch":"pnpm build --watch","test":"vitest run","lint":"eslint ."},"gitHead":"c31e90130a5c9765c23f688ecea70adc6164543d","_id":"@caleblawson/voice-openai@0.10.3","_integrity":"sha512-K5OaRL/Ei0J91+n3pFfl5kZZXRazxtZOmUc0WPw8R5z6+EalH/3Ai61JIlEVuzYV/9/kCZfA5ctdnzfyJG/12Q==","_resolved":"C:\\Users\\caleb\\AppData\\Local\\Temp\\ff56aa862d6c73481d6515bdbbadd700\\caleblawson-voice-openai-0.10.3.tgz","_from":"file:caleblawson-voice-openai-0.10.3.tgz","_nodeVersion":"21.2.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-K5OaRL/Ei0J91+n3pFfl5kZZXRazxtZOmUc0WPw8R5z6+EalH/3Ai61JIlEVuzYV/9/kCZfA5ctdnzfyJG/12Q==","shasum":"1e8f5aa84fe49916551c6b233d3c1930f21d1405","tarball":"https://registry.npmjs.org/@caleblawson/voice-openai/-/voice-openai-0.10.3.tgz","fileCount":9,"unpackedSize":28442,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC8A3bLVXMW8pE76KmULaOaGSMel7ZC8JmEBPG0d+OlfAiEA2H7esxStkGlTlPwV8V4zerLNOZlSqkeqlA0VkFMxap8="}]},"_npmUser":{"name":"caleblawson","email":"caleb.lawson@dynapt.com","actor":{"name":"caleblawson","email":"caleb.lawson@dynapt.com","type":"user"}},"directories":{},"maintainers":[{"name":"caleblawson","email":"caleb.lawson@dynapt.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/voice-openai_0.10.3_1750741057235_0.7099468643383422"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-24T04:57:37.153Z","0.10.3":"2025-06-24T04:57:37.401Z","modified":"2025-06-24T04:57:37.680Z"},"maintainers":[{"name":"caleblawson","email":"caleb.lawson@dynapt.com"}],"description":"Mastra OpenAI speech integration","license":"Elastic-2.0","readme":"# @mastra/voice-openai\r\n\r\nOpenAI Voice integration for Mastra, providing both Text-to-Speech (TTS) and Speech-to-Text (STT) capabilities using OpenAI's advanced models.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @mastra/voice-openai\r\n```\r\n\r\n## Configuration\r\n\r\nThe module requires an OpenAI API key, which can be provided through environment variables or directly in the configuration:\r\n\r\n```bash\r\nOPENAI_API_KEY=your_api_key\r\n```\r\n\r\n## Usage\r\n\r\n```typescript\r\nimport { OpenAIVoice } from '@mastra/voice-openai';\r\n\r\n// Create voice with both speech and listening capabilities\r\nconst voice = new OpenAIVoice({\r\n  speechModel: {\r\n    name: 'tts-1', // or 'tts-1-hd' for higher quality\r\n    apiKey: 'your-api-key', // Optional, can use OPENAI_API_KEY env var\r\n  },\r\n  listeningModel: {\r\n    name: 'whisper-1',\r\n    apiKey: 'your-api-key', // Optional, can use OPENAI_API_KEY env var\r\n  },\r\n  speaker: 'alloy', // Default voice\r\n});\r\n\r\n// Or create speech-only voice\r\nconst speechVoice = new OpenAIVoice({\r\n  speechModel: {\r\n    name: 'tts-1',\r\n    apiKey: 'your-api-key',\r\n  },\r\n  speaker: 'nova',\r\n});\r\n\r\n// Or create listening-only voice\r\nconst listeningVoice = new OpenAIVoice({\r\n  listeningModel: {\r\n    name: 'whisper-1',\r\n    apiKey: 'your-api-key',\r\n  },\r\n});\r\n\r\n// List available voices\r\nconst speakers = await voice.getSpeakers();\r\n\r\n// Generate speech\r\nconst audioStream = await voice.speak('Hello from Mastra!', {\r\n  speaker: 'nova', // Optional: override default speaker\r\n  speed: 1.0, // Optional: adjust speech speed\r\n});\r\n\r\n// Convert speech to text\r\nconst text = await voice.listen(audioStream, {\r\n  filetype: 'wav',\r\n});\r\n```\r\n\r\n## Features\r\n\r\n- High-quality Text-to-Speech synthesis\r\n- Accurate Speech-to-Text transcription\r\n- Multiple voice options\r\n- Natural and expressive speech output\r\n- Fast processing times\r\n\r\n## Voice Options\r\n\r\nOpenAI provides several high-quality voices:\r\n\r\n- alloy (Neutral)\r\n- echo (Male)\r\n- fable (Male)\r\n- onyx (Male)\r\n- nova (Female)\r\n- shimmer (Female)\r\n- ash (Male)\r\n- coral (Female)\r\n- sage (Male)\r\n\r\nView the complete list in OpenAI's [Text to Speech documentation](https://platform.openai.com/docs/guides/text-to-speech).\r\n","readmeFilename":"README.md","_rev":"1-25ec652e9ced0ecf412be8f0f3e3040b"}