{"_id":"60db","_rev":"8-647b6691ddf83b37d54dbe5f6ab413c7","name":"60db","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.1":{"name":"60db","version":"1.0.1","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.1","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"5a67bda6c5c3b40884c5d13fec98cf56ada60eb5","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.1.tgz","fileCount":4,"integrity":"sha512-2hFIbIZ3D0ognR0j2Q4yVoqtJeNU+LsQArAN4nyM7CX4HGoAQheKxwKnqXO3dWlKvSy+3y1tt2clVu7Lrv+suQ==","signatures":[{"sig":"MEQCIFK7ordS4GHYc5JBNxeiH39BAnSgw5N8Gi0eix7b7qX5AiADerlzt+QVlLqS6RED+cew65MZmAMtr3/ZhgYNM+7+QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10572},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"56ed3952a6ef10361db7546645b19988e18c59a4","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.1_1770367192918_0.42908276011743185","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"60db","version":"1.0.2","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.2","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"2630044160831a6ba84e336501856039af9e4b07","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.2.tgz","fileCount":4,"integrity":"sha512-eCkXEUB8p0OKb3WAVdmzECBEXlh0IJDfMpPppPIO5ZnxerZbEchpOrU/yPbF4XZnOD5ThEXy/PBKaIPsF9nhSA==","signatures":[{"sig":"MEUCIQDsL+QOyOYZDXFTD/F6Oa5bannQvKK24Dh1ISvI+bj39wIgbFYxgifbnDYmPboxaIdBDf37jUZjd5QC0BlCDVgfd+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10627},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"56ed3952a6ef10361db7546645b19988e18c59a4","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.2_1770369252536_0.4233593154860449","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"60db","version":"1.0.3","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.3","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"f682e29e1291e45e9a5c0cfcaeb7930db3acb27d","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.3.tgz","fileCount":4,"integrity":"sha512-dKyXqmuX5lHbt5ETjMEiuE/98SHkcfy5Ux4Mj/zVI4yzBYcsJ+xvwAcRWHg2SMAyq63XK4/oUJj43xmLhoU50g==","signatures":[{"sig":"MEYCIQCCcrkfL5gCua2GnQgEVd7UQ36Wmiu7a2Ml6O3vQ97XzAIhAK+UI70D7JN7KmNBInoXV2NQJ5yDeNBHh3fij/wx/Qkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10695},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"56ed3952a6ef10361db7546645b19988e18c59a4","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.3_1770369385452_0.5391961540264789","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"60db","version":"1.0.4","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.4","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"28c0d40187d47713b2d6fb8b92cd4f3fd4ebda44","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.4.tgz","fileCount":4,"integrity":"sha512-aWuaC4SCfGpvZuwMayuoGIfig1i2lGZLN4MrGrTi7VqkJ1LI9DbIQz8tmK2dTaedVNxLJFMLTNYuip+1xbG0ug==","signatures":[{"sig":"MEQCIDxetmJsUout1skYcQmSHcsw3MJ1iHsWF78SSdw+Vll8AiAVJbOp3weuOcmHmdOcR9wME9yeDeh7tvAAx5nZx9CqXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10610},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"db7dfce792feeb8a160dd435477a86024d63decc","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.4_1770370616693_0.330250879990315","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"60db","version":"1.0.5","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.5","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"14ff373dde058679d006b55cf25b5d57b9ad6719","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.5.tgz","fileCount":6,"integrity":"sha512-j+gY2vximK/BIsHr7VRR0doyhCoA7SZ193hnUj8NrunQZOHxEfVCJ4Lt67exE7CeyLaeBq3xTMu/hkOv81qLyg==","signatures":[{"sig":"MEUCIHyHCFve+jVuNRTdhYjZats8dHK8BXUdF++0wigR4qXvAiEAmiWPzgM4PFIn8XWcjlyeeXtGoxTr7caI96x3WmNjwk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13893},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"db7dfce792feeb8a160dd435477a86024d63decc","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.5_1770371764926_0.20531692568600635","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"60db","version":"1.0.7","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.7","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"b2fa65809d9067651a3af2941f185531cc79691e","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.7.tgz","fileCount":6,"integrity":"sha512-1KiK5r6zJGx0oruJAkjs6M0FROdC9VcYNDQ5MjOQf4u+aQSHAkxqt/2QWsjxUEK+8iuYXGETDe6f8qFeHMhOwg==","signatures":[{"sig":"MEYCIQDZ4V4JXZFnj3WfoXbubghrWV+kQ+1q1abC2GAogZnhtQIhAOa2lEO31RmYYqiYtC10jDZsNDXigClePtabyl1ozO8e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21158},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"845cb644f3ba7fdd0741e5d3f7d54b0eff9ad03d","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.7_1775630469279_0.4976869972812503","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"60db","version":"1.0.8","keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","_id":"60db@1.0.8","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"dist":{"shasum":"171c542f24d4efb61a36bc14852b7652783a1adf","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.8.tgz","fileCount":6,"integrity":"sha512-b13yffRPouUjNNPb99DCxbIIEFkzCsRHvilYZeOUdnBcI9tM8dPLq7064NIQ3DHvogKd2LiAcboJa7K7hSdKrQ==","signatures":[{"sig":"MEYCIQCFwku083H8TrIiPKxh2/Ef4A7E+Y16Hs0ItNAtz1gjvAIhAOmGhn0d9sgOv2btH5N0wJs8U75OfEFNK1sY6Uc+hhc8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26388},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"845cb644f3ba7fdd0741e5d3f7d54b0eff9ad03d","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"_npmVersion":"10.5.0","description":"Official 60db SDK for Node.js","directories":{},"_nodeVersion":"18.20.2","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/60db_1.0.8_1775632526984_0.9108661066489585","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"60db","version":"1.0.9","description":"Official 60db SDK for Node.js","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"keywords":["60db","tts","stt","voice","ai"],"author":{"name":"60db"},"license":"MIT","dependencies":{"axios":"^1.6.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.3.0"},"_id":"60db@1.0.9","gitHead":"845cb644f3ba7fdd0741e5d3f7d54b0eff9ad03d","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-lJMJsQqkk5nzpDTsDA3u4ChNbGCFgWhdJqRP3A4SnU09ZW5oMPVdjGviEZYhrwe6K3aSn6Vay0M05Rq9VZBamA==","shasum":"ee80895493823db3531dffc9cf199d21aabc422e","tarball":"https://registry.npmjs.org/60db/-/60db-1.0.9.tgz","fileCount":6,"unpackedSize":36876,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCECliCCoDqnusIc1ZblslbiSqxJ5NkY8pyuta6nT1EgAIhAPSde8/52yM97/0UhHlJjRsBzhspU4OsJcbuLSxzA1+H"}]},"_npmUser":{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"},"directories":{},"maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/60db_1.0.9_1775637370781_0.4863453188954263"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-06T08:39:52.828Z","modified":"2026-04-08T08:36:11.374Z","1.0.1":"2026-02-06T08:39:53.049Z","1.0.2":"2026-02-06T09:14:12.702Z","1.0.3":"2026-02-06T09:16:25.604Z","1.0.4":"2026-02-06T09:36:56.843Z","1.0.5":"2026-02-06T09:56:05.055Z","1.0.7":"2026-04-08T06:41:09.424Z","1.0.8":"2026-04-08T07:15:27.151Z","1.0.9":"2026-04-08T08:36:10.916Z"},"author":{"name":"60db"},"license":"MIT","keywords":["60db","tts","stt","voice","ai"],"description":"Official 60db SDK for Node.js","maintainers":[{"name":"60db-owns","email":"devendra.vishwkarma@engineermaster.in"}],"readme":"# 60db\n\nOfficial 60db SDK for JavaScript/TypeScript\n\n## Installation\n\n```bash\nnpm install 60db\n```\n\n## Quick Start\n\n```typescript\nimport { SixtyDBClient } from '60db';\n\nconst client = new SixtyDBClient('your-api-key');\n```\n\n## Features\n\n### 🎤 Text-to-Speech\n\n**Basic TTS (returns ArrayBuffer):**\n```typescript\nconst audio = await client.textToSpeech({\n  text: 'Hello, world!',\n  voice_id: 'your-voice-id',\n  speed: 1.0,        // 0.5 to 2.0 (default 1.0)\n  pitch: 0,          // -10 to 10 (default 0)\n  stability: 1,      // 0 to 1 (default 1)\n  boost_volume: false,\n  sample_rate: 24000\n});\n```\n\n**Streaming TTS (real-time chunks):**\n```typescript\nawait client.textToSpeechStream(\n  {\n    text: 'This is a streaming example.',\n    voice_id: 'your-voice-id',\n    sample_rate: 24000\n  },\n  {\n    onChunk: (chunkIndex, totalBytes) => {\n      console.log(`Progress: ${chunkIndex} chunks, ${totalBytes} bytes`);\n    },\n    onRawChunk: (pcmBytes, sampleRate) => {\n      console.log(`Received: ${pcmBytes.length} bytes at ${sampleRate}Hz`);\n    },\n    onComplete: (wavUrl, sampleRate, totalPcmBytes) => {\n      console.log(`Complete! WAV: ${wavUrl}`);\n      console.log(`Duration: ${totalPcmBytes / (sampleRate * 2)} seconds`);\n    },\n    onError: (error) => {\n      console.error('Error:', error);\n    }\n  }\n);\n```\n\n### 🤖 Chat Completions (LLM)\n\n**Non-streaming (simple):**\n```typescript\nconst response = await client.chat.completions.create({\n  model: 'qcall/slm-3b-int4',\n  messages: [\n    { role: 'system', content: 'You are a helpful assistant.' },\n    { role: 'user', content: 'What is 60db?' }\n  ],\n  stream: false\n});\n\nconsole.log(response.choices[0].message.content);\n```\n\n**Streaming (real-time):**\n```typescript\nconst stream = await client.chat.completions.create({\n  model: 'qcall/slm-3b-int4',\n  messages: [\n    { role: 'system', content: 'You are a helpful assistant.' },\n    { role: 'user', content: 'Tell me a joke' }\n  ],\n  stream: true\n});\n\nfor await (const chunk of stream) {\n  if (chunk.choices?.[0]?.delta?.content) {\n    process.stdout.write(chunk.choices[0].delta.content);\n  }\n}\n```\n\n**Custom parameters:**\n```typescript\nconst response = await client.chat.completions.create({\n  model: 'qcall/slm-3b-int4',\n  messages: [\n    { role: 'user', content: 'Explain AI briefly' }\n  ],\n  top_k: 50,                           // Default: 100\n  chat_template_kwargs: {\n    enable_thinking: true              // Enable thinking mode\n  },\n  stream: false\n});\n```\n\n### 🎧 Voices\n\n```typescript\n// List all voices\nconst voices = await client.getVoices();\nconsole.log('Total voices:', voices.data.cloned_voices.length);\n\n// Get specific voice\nconst voice = await client.getVoice(voiceId);\n```\n\n### 🌍 Languages\n\n```typescript\nconst languages = await client.getLanguages();\n// Returns: [{ language_id: 'en', name: 'English' }, ...]\n```\n\n### 🎤 Speech-to-Text\n\n```typescript\nconst result = await client.speechToText(audioFile, {\n  language: 'en'\n});\n```\n\n## Configuration\n\n```typescript\nconst client = new SixtyDBClient({\n  apiKey: 'your-api-key',\n  baseUrl: 'https://api.60db.ai'  // Optional, default shown\n});\n```\n\n## API Reference\n\n| Method | Description |\n|--------|-------------|\n| `textToSpeech(params)` | Convert text to speech (returns ArrayBuffer) |\n| `textToSpeechStream(params, callbacks)` | Stream text to speech with callbacks |\n| `chat.completions.create(params)` | Chat completions (LLM) with streaming support |\n| `getVoices()` | List all available voices |\n| `getVoice(id)` | Get specific voice details |\n| `getLanguages()` | Get supported languages |\n| `speechToText(audio, options)` | Transcribe audio to text |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}