{"_id":"@camb-ai/sdk","_rev":"16-a35802e57a59882a6a631a3c1c773a15","name":"@camb-ai/sdk","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"@camb-ai/sdk","version":"1.0.0","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.0","maintainers":[{"name":"ravenur","email":"tanbaynurbol@gmail.com"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"d049beca218857c9c308a936e9193741fb219477","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.0.tgz","fileCount":1111,"integrity":"sha512-bHdG/AbWeGhce6E+OWO2r8mKLmJX6ZphPdy1E3/H8P91jXXY3mVXUKS5tAxwSh5GH3o3yZDa3mC7TdPf4kyyUQ==","signatures":[{"sig":"MEYCIQCFibWlRHUTmC55rncty/qaOF01/lctXusmIwL6LgufhAIhANBeaXpg2CERVDjaeuhe4lLfdSF02Z+kGrFVBNW5Oydc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":896959},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"e72ffe30ce5187391bbafcf913120140c49f0643","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"ravenur","email":"tanbaynurbol@gmail.com"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"9.2.0","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"18.19.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1768385711851_0.40550444230500715","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@camb-ai/sdk","version":"1.0.1","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.1","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"ravenur","email":"tanbaynurbol@gmail.com"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"1bebe2c0c5810145c6cb99e638acb53f5ce65478","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.1.tgz","fileCount":1111,"integrity":"sha512-mYKBfwiTZKPJruH1MJ/Fu7lOvbshZ2l3GmBuYLWebrq9AbArFhgIoIkmx6/JXrAMP0nTQyhbw/puo55nk9M4Ow==","signatures":[{"sig":"MEQCIHdgco//8meonCbTZawB5BphMdmUUwSuruRMuZMBlZ9nAiAwWwJgK0RGHUO+GBlL8skGbJTFNxFDptCoPCBsam75cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":897224},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"ed498f244b9b373ffcd6e661fe43fd53be991015","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"ravenur","email":"tanbaynurbol@gmail.com"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"9.2.0","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"18.19.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1_1769601687191_0.6039622585993032","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@camb-ai/sdk","version":"1.0.4","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.4","maintainers":[{"name":"vishalsonycamb","email":"vishal.sony@camb.ai"},{"name":"arnavm","email":"arnavmehta.contact@gmail.com"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"56e85d5afae43308b0189488a508d8413141fa2e","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.4.tgz","fileCount":1111,"integrity":"sha512-navD50PHJkYRcFwOWz1XeLTchkEc32ppWqEpGmykWih8dtr3m/H0ZKBkKnBIFXqhjD/05wmgLZs1evQ8VOwqlw==","signatures":[{"sig":"MEQCIADfaFMR/YHTFNVcNDIr/Pj9ETOiHuD4NWYezCWaqwOUAiAQXaCCl/oUWBSm/cxyjhS9pJcymEukGigjsbFc51G+CQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":914263},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"6f6b2fd04b7f9289ebdb0aca1fe0aa685182c6e1","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"vishalsonycamb","email":"vishal.sony@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.6.2","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.4_1776937475378_0.6297284405614068","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@camb-ai/sdk","version":"1.0.5","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.5","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"b7549d93d4e4fbc13852264add00a0ef1dc422c4","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.5.tgz","fileCount":1151,"integrity":"sha512-P9FFfaBDlw3FaOXhSY5G4sFcWsBfPfy344tGxrrMBd3BBHYLWUkGsfZUwR1+U0Fjedof3jCLcMIrsKMv9wLv+g==","signatures":[{"sig":"MEYCIQCF2B38M9uqLjJ1hpjmc0lQUn0EMORlJaeneocONoAWsQIhAPRTRcSwqs9h/V+PfsJTVJQjsskrmg+tlVptV58NyOh4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001762},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"3b7034b6ff899be1a204887adff6001636109ada","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.5_1779789867580_0.650305457337438","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@camb-ai/sdk","version":"1.0.6","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.6","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"154851f7f2d0093ea4d67b5d191f354bc43f16e4","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.6.tgz","fileCount":1187,"integrity":"sha512-kBv/GcTEMgJdKNJ0rTNccbC68OPsX28ZiL3hDzC8R98OSn+yJeVkYfy/BDd0xGgAyKuyeW73SernJqefz2jrMg==","signatures":[{"sig":"MEQCIF/NA12VlURlVsA5ty8UOrknbWCQk/6IIEfokY3p/QV5AiAcATrXFLOk/HcEHQRiq1W+vwitlbtMlRgZND4cZn1j1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085453},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"ff9d039d21bc6a6655979267794c6a0608b673ef","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.6_1779872583008_0.16063127965304647","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@camb-ai/sdk","version":"1.0.7","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.7","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"edc7627c83ee87a8862470eb202fa4da3a4a2a16","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.7.tgz","fileCount":1187,"integrity":"sha512-zYPN98/fxi1lA7aKdN07M4lkA0TaUIqaB5DPdBJgLKo4P65nxc0WPNAQLE4hi13kiPfEC1v0tCvNgs17CSEA3A==","signatures":[{"sig":"MEUCIAy1Rk1CoUenqPGjtLyyiBRlk66exETXc/V8EfFxwO/1AiEA78VTJ8Y3oeDn7LDTfcSgfTWuh14DGJNqrYPENiVk4lw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085258},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"60c99907d38597f6bc91c5b4a5141687058ebf3e","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.7_1779873706546_0.9552162908907551","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@camb-ai/sdk","version":"1.0.8","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.8","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"719a0563cc2aeaeb0f40e54cdfcf4ea3eb783fb3","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.8.tgz","fileCount":1187,"integrity":"sha512-yaw7gGKGykfEqXD+IUcHBQeLTLKSA5aj+ira5CalV7Mb7XP6Mnshb8B4PIjdYjNXnkQdSIIUUtnEvuu+yBtfJA==","signatures":[{"sig":"MEUCIQD3zH1eyKWlsCD/JLJD6Q7NGWLDZToESYKCDo+QTnuJtQIgHHXnEJshInNL6RQ+xBsjVNMUO86mMjoHD8Xn/nLhg1U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1086126},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"a027a10af492a0c32745795da466408d2400f17f","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.8_1780807061815_0.5057539090384013","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@camb-ai/sdk","version":"1.0.9","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.0.9","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"ef82bd41ba6b23bea8fddcd76a641203a1c1148d","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.0.9.tgz","fileCount":1187,"integrity":"sha512-sLM5Zqd8RTypw6zwp9rolaqp+ON77q5aRk8UdrSsiRlik4qCF6QKZN222sFEt5dVzwaI8xQig+BoAXP+aNbQnQ==","signatures":[{"sig":"MEQCIADxt2z3ot0ZJmw5KZQxa3yqJ77RDtiIPn4VMWqsDz3tAiAB8P7xB3jD1zwkr1U93fm3Wy41TyQVKECCq3u+iSOyhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1086651},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"c0d3543446e5e9335a5f7823109b96d9d075829c","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.9_1782840361356_0.05476407488646551","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@camb-ai/sdk","version":"1.2.0","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.2.0","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"6e22ee81b14432be11dd91672905d602a44b2bf6","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.2.0.tgz","fileCount":1187,"integrity":"sha512-5XZMMtWfvpgJ9Tlo6m7aLlraEyo7hK6yv2aZkXoWCvAS51vkZZfI87witD1dJkvFXctP5hy/d0WAqR8bYKOTGQ==","signatures":[{"sig":"MEUCIAd4OEIvknPjhV/w7FeTV5O7o8juLJCoiBXYvkqgb27GAiEAxRDRxHrk87Ojnq8GQpPRuXmkYI9IDQhOwya+MMfzgEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1087406},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"35ed54769eab0fe7cf3b7a32a88df69b0b1bed12","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.0_1784032116033_0.07295522922766007","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@camb-ai/sdk","version":"1.3.0","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.3.0","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"d6b71d06d4b51c39600bb11dd66833c6e772fd78","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.3.0.tgz","fileCount":1239,"integrity":"sha512-CHOUEazDR/iyFz6nDdHYAKu2ryLeKMLDW3QwetCCeFmeptT6l5CIZ3f0EEleM3UlSDNDU8mX/Cic92Yp0DoA+w==","signatures":[{"sig":"MEUCIQD9Vj6z4/3+fWJ5SZgZiuWwbVPFAB/HHI2AEyivimO7TgIgU/1Q8k4pxKDJphoZL3ZqV4HC0KIOoujJpm2BGiN8Loc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1134953},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"40e3ba3ebe6d8512de2ab65cdc96f627a9996675","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.0_1785162692530_0.1313054703393839","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@camb-ai/sdk","version":"1.4.0","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","_id":"@camb-ai/sdk@1.4.0","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"homepage":"https://docs.camb.ai","bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"dist":{"shasum":"93463fc7d79a7dec46b3d1fe2f38c745d0143728","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.4.0.tgz","fileCount":1239,"integrity":"sha512-NFP96BlCazhNYVNQ/JWpi56XTUwZ72ht/Jf2qd9n+i54Vt8xWPpRXFdCkAIndHAEX29NXnG9w955fzv/raLS5g==","signatures":[{"sig":"MEYCIQCrKek7CMdA/jLSWpUTlSgcXHd6h/9OrAKN83bwchVTYgIhANCI3NAvSzU6qeUHLF2wNf7Haxqyh3oM8szuv3fCGW8D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1145908},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"6243f31cb6392494817f54a292b03a5f0827a9bb","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"repository":{"url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","type":"git","directory":"."},"_npmVersion":"11.12.1","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"ws":"^8.16.0","node-record-lpcm16":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.4.0_1787845914875_0.9550297789503066","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@camb-ai/sdk","version":"1.5.0","description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","test":"npm run build && tsc --noEmit --strict --skipLibCheck --module NodeNext --moduleResolution NodeNext tests/dub-srt.types.ts && node --test tests/*.test.mjs","prepare":"npm run build","clean":"rm -rf dist","rebuild":"npm run clean && npm run build"},"keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"author":{"name":"Camb.ai"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","directory":"."},"bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"homepage":"https://docs.camb.ai","devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"optionalDependencies":{"node-record-lpcm16":"^1.0.1","ws":"^8.16.0"},"engines":{"node":">=18.0.0"},"gitHead":"9e010012406dc583796301f738292007653b3ea1","_id":"@camb-ai/sdk@1.5.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-gbOJe8mEGncnJfRh60eEafnAD975Tzt1PyJJJvW/lB8EI1/nQ+co2AiFvAJshLdYJdA6C9ggA/Xknuq85/i9Zw==","shasum":"46999198a2abfb1f6abede732e5c2e45118178d4","tarball":"https://registry.npmjs.org/@camb-ai/sdk/-/sdk-1.5.0.tgz","fileCount":1247,"unpackedSize":1150458,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDH+2joF+lHCT9snSm2T509TiGMBs0pzycd6ZLN6OtLMQIgLEG1E1OnqC4QOrN8oRMzeOR5JhGrjWEIcvJDqa/DGCw="}]},"_npmUser":{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},"directories":{},"maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.5.0_1789123506340_0.28859871035360873"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-14T10:15:11.760Z","modified":"2026-09-11T10:45:06.711Z","1.0.0":"2026-01-14T10:15:12.141Z","1.0.1":"2026-01-28T12:01:27.363Z","1.0.4":"2026-04-23T09:44:35.585Z","1.0.5":"2026-05-26T10:04:27.718Z","1.0.6":"2026-05-27T09:03:03.198Z","1.0.7":"2026-05-27T09:21:46.766Z","1.0.8":"2026-06-07T04:37:42.019Z","1.0.9":"2026-06-30T17:26:01.529Z","1.2.0":"2026-07-14T12:28:36.183Z","1.3.0":"2026-07-27T14:31:32.692Z","1.4.0":"2026-08-27T15:51:55.037Z","1.5.0":"2026-09-11T10:45:06.530Z"},"bugs":{"url":"https://github.com/Camb-ai/cambai-node-sdk/issues"},"author":{"name":"Camb.ai"},"license":"MIT","homepage":"https://docs.camb.ai","keywords":["camb","camb.ai","text-to-speech","tts","voice-cloning","dubbing","audio-generation","ai","speech-synthesis"],"repository":{"type":"git","url":"git+https://github.com/Camb-ai/cambai-node-sdk.git","directory":"."},"description":"Official TypeScript SDK for Camb.ai - Advanced voice and audio generation APIs","maintainers":[{"name":"arnavm","email":"arnavmehta.contact@gmail.com"},{"name":"divyam-camb","email":"divyam.gupta@camb.ai"},{"name":"azcamb","email":"ahmad.zaweet@camb.ai"}],"readme":"# Camb.ai TypeScript SDK\n\n<div id=\"top\" align=\"center\">\n\n![Banner](assets/banner5_720.jpg)\n\n   <h3>\n   <a href=\"https://camb.ai/\"> Camb AI Website </a></h3>\n\n[![npm version](https://img.shields.io/npm/v/@camb-ai/sdk.svg?style=flat-square)](https://www.npmjs.com/package/@camb-ai/sdk)\n[![License](https://img.shields.io/npm/l/@camb-ai/sdk.svg?style=flat-square)](https://github.com/Camb-ai/cambai-node-sdk/blob/main/LICENSE)\n\n</div>\n\nThe official TypeScript SDK for interacting with Camb AI's powerful voice and audio generation APIs. Create expressive speech, unique voices, and rich soundscapes with just a few lines of code. Works seamlessly in Node.js environments (18+).\n\n## ✨ Features\n\n- **Dubbing**: Dub your videos into multiple languages with voice cloning!\n- **Expressive Text-to-Speech**: Convert text into natural-sounding speech using a wide range of pre-existing voices.\n- **Generative Voices**: Create entirely new, unique voices from text prompts and descriptions.\n- **Soundscapes from Text**: Generate ambient audio and sound effects from textual descriptions.\n- **Transcripts & Subtitles**: Create async transcription/subtitle jobs and export TXT, SRT, or VTT results as raw data or files.\n- **Live Transcription**: Stream microphone (browser or Node) or file audio over a WebSocket and receive cumulative interim transcripts, word-level timing, and typed events.\n- **Realtime Speech-to-Speech Translation**: Stream speech over a WebSocket and receive the translation as live text and synthesized speech.\n- Access to voice cloning, translation, and more (refer to full API documentation).\n\n## 📦 Installation\n\nInstall the SDK using npm (requires Node.js 18+):\n\n```bash\nnpm install @camb-ai/sdk\n```\n\n## 🔑 Authentication & Accessing Clients\n\nTo use the Camb AI SDK, you'll need an API key. You can authenticate it by:\n\n```javascript\nimport { CambClient } from \"@camb-ai/sdk\";\n\n// Initialize the client\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n```\n\n### Client with Custom Hosting Provider (e.g. Baseten, Vertex)\n\n#### Baseten\n\nTo deploy the model go to models from baseten example: <https://www.baseten.co/library/mars6/> and deploy then perform setup like below\n\n```javascript\nimport { CambClient, CambApi, saveStreamToFile } from \"@camb-ai/sdk\";\nimport * as fs from \"fs\";\n\n// Initialize client with Baseten provider\nconst client = new CambClient({\n  apiKey: process.env.CAMB_API_KEY,\n  ttsProvider: \"baseten\",\n  providerParams: {\n    api_key: process.env.BASETEN_API_KEY,\n    mars_pro_url: process.env.BASETEN_URL,\n  },\n});\n\nasync function main() {\n  try {\n    // Read reference audio file (you need to provide this)\n    const referenceAudioPath =\n      process.env.REFERENCE_AUDIO_PATH || \"reference.wav\";\n\n    if (!fs.existsSync(referenceAudioPath)) {\n      console.error(`Reference audio file not found: ${referenceAudioPath}`);\n      console.log(\n        \"Please provide a reference audio file or set REFERENCE_AUDIO_PATH environment variable\",\n      );\n      return;\n    }\n\n    const referenceAudio = fs\n      .readFileSync(referenceAudioPath)\n      .toString(\"base64\");\n\n    console.log(\"Generating speech with Baseten provider...\");\n    const requestPayload = {\n      text: \"Hello World and my dear friends\",\n      language: CambApi.CreateStreamTtsRequestPayload.Language.EnUs,\n      speech_model:\n        CambApi.CreateStreamTtsRequestPayload.SpeechModel.Mars81FlashBeta,\n      voice_id: 1, // Required but ignored when using custom hosting provider\n      additional_body_parameters: {\n        reference_audio: referenceAudio,\n        reference_language: CambApi.CreateStreamTtsRequestPayload.Language.EnUs, // required\n      },\n    };\n\n    const response = await client.textToSpeech.tts(requestPayload);\n\n    const outputFile = \"baseten_output.wav\";\n    await saveStreamToFile(response, outputFile);\n    console.log(\n      `✓ Audio generated with Baseten provider and saved to ${outputFile}`,\n    );\n  } catch (error) {\n    console.error(\"Error:\", error.message);\n    if (error.body) {\n      console.error(\"Details:\", error.body);\n    }\n  }\n}\n\nmain();\n```\n\n## 🚀 Getting Started: Examples\n\n**NOTE**: For more examples and full ready to run files refer to the `examples/` directory.\n\n### 1. Text-to-Speech (TTS)\n\nConvert text into spoken audio using one of Camb AI's high-quality voices.\n\n### Supported Models & Sample Rates\n\n| Model Name        | Sample Rate  | Description                                                                                  |\n| :---------------- | :----------- | :------------------------------------------------------------------------------------------- |\n| **mars-pro**      | **48kHz**    | High-fidelity, professional-grade speech synthesis. Ideal for long-form content and dubbing. |\n| **mars-instruct** | **22.05kHz** | Optimized for instruction-following and nuance control.                                      |\n| **mars-flash**    | **22.05kHz** | Low-latency model optimized for real-time applications and conversational AI.                |\n\n#### a) Get Audio and Save to File\n\n```javascript\nimport { CambClient, CambApi, saveStreamToFile } from \"@camb-ai/sdk\";\n\n// Initialize client (ensure API key is set)\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n\nconst response = await client.textToSpeech.tts({\n  text: \"Hello from Camb AI! This is a test of our Text-to-Speech API.\",\n  voice_id: 20303, // Example voice ID, get from client.voiceCloning.listVoices()\n  language: CambApi.CreateStreamTtsRequestPayload.Language.EnUs,\n  speech_model:\n    CambApi.CreateStreamTtsRequestPayload.SpeechModel.Mars81FlashBeta, // options: mars-pro, mars-flash, mars-instruct, mars-8-pro-beta, mars-8-flash-beta, mars-8, mars-8-flash, mars-8-instruct, mars-7, mars-6\n  output_configuration: {\n    format: \"wav\",\n  },\n});\n\nawait saveStreamToFile(response, \"tts_output.wav\");\nconsole.log(\"Success! Audio saved to tts_output.wav\");\n```\n\n#### b) Using Mars Flash (Low Latency)\n\nFor applications requiring faster responses, switch to `mars-flash` (22.05kHz).\n\n```javascript\nconst response = await client.textToSpeech.tts({\n  text: \"Hey! I can respond much faster.\",\n  language: CambApi.CreateStreamTtsRequestPayload.Language.EnUs,\n  speech_model: CambApi.CreateStreamTtsRequestPayload.SpeechModel.MarsFlash,\n  voice_id: 20303,\n  output_configuration: {\n    format: \"wav\",\n  },\n});\n\nawait saveStreamToFile(response, \"fast_output.wav\");\n```\n\n#### c) List Available Voices\n\nYou can list available voices to find a voice_id that suits your needs:\n\n```javascript\nconst voices = await client.voiceCloning.listVoices();\nconsole.log(`Found ${voices.length} voices:`);\n\nfor (const voice of voices.slice(0, 5)) {\n  // Print first 5 as an example\n  console.log(\n    `  - ID: ${voice.id}, Name: ${voice.voice_name}, Gender: ${voice.gender}, Language: ${voice.language}`,\n  );\n}\n```\n\n### 2. Text-to-Voice (Generative Voice)\n\nCreate completely new and unique voices from a textual description of the desired voice characteristics.\n\n```javascript\nimport { CambClient } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n\ntry {\n  console.log(\"Generating a new voice and speech...\");\n  // Returns 3 sample URLs\n  const result = await client.textToVoice.createTextToVoice({\n    text: \"Crafting a truly unique and captivating voice that carries a subtle air of mystery, depth, and gentle warmth.\",\n    voice_description:\n      \"A smooth, rich baritone voice layered with a soft echo, ideal for immersive storytelling and emotional depth.\",\n  });\n  console.log(result);\n} catch (error) {\n  console.error(`Exception when calling textToVoice: ${error}`);\n}\n```\n\n### 3. Text-to-Audio (Sound Generation)\n\nGenerate sound effects or ambient audio from a descriptive prompt.\n\n```javascript\nimport { CambClient, saveStreamToFile } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n\nconst response = await client.textToAudio.createTextToAudio({\n  prompt: \"A gentle breeze rustling through autumn leaves in a quiet forest.\",\n  duration: 10,\n  audio_type: \"sound\",\n});\n\nconst taskId = response.task_id;\nif (taskId) {\n  while (true) {\n    const status = await client.textToAudio.getTextToAudioStatus({\n      task_id: taskId,\n    });\n    console.log(`Status: ${status.status}`);\n\n    if (status.status === \"SUCCESS\") {\n      const result = await client.textToAudio.getTextToAudioResult({\n        run_id: status.run_id,\n      });\n      await saveStreamToFile(result, \"sound_effect.mp3\");\n      console.log(\"Success! Sound effect saved to sound_effect.mp3\");\n      break;\n    }\n\n    await new Promise((resolve) => setTimeout(resolve, 2000));\n  }\n}\n```\n\n### 4. End-to-End Dubbing\n\nDub videos into different languages with voice cloning and translation capabilities.\n\n```javascript\nimport { CambClient, CambApi } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n\nconst response = await client.dub.endToEndDubbing({\n  video_url: \"your_accessible_video_url\",\n  source_language: CambApi.Languages.EN_US, // Check client.languages.getSourceLanguages()\n  target_language: CambApi.Languages.HI_IN, // Example target language\n  transcription_mode: \"fast\", // fast (default) or slow for a more thorough transcription pass\n});\n\nconst taskId = response.task_id;\nconsole.log(`Dub Task created with ID: ${taskId}`);\n\nwhile (true) {\n  const statusResponse = await client.dub.getEndToEndDubbingStatus({ task_id: taskId });\n  console.log(`Current Status: ${statusResponse.status}`);\n\n  if (statusResponse.status === \"SUCCESS\") {\n    const dubbedRunInfo = await client.dub.getDubbedRunInfo({\n      run_id: statusResponse.run_id,\n    });\n    console.log(`Dubbed Audio URL: ${dubbedRunInfo.audio_url}`);\n    console.log(`Transcript: ${dubbedRunInfo.transcript}`);\n    console.log(`Dubbed Video URL: ${dubbedRunInfo.video_url}`);\n    break;\n  }\n\n  await new Promise((resolve) => setTimeout(resolve, 5000));\n}\n```\n\n#### Use your own SRT transcript or translation\n\nRead SRT files as UTF-8 and pass their contents when creating a dub:\n\n```typescript\nimport { readFile } from \"node:fs/promises\";\nimport { CambClient, CambApi } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: process.env.CAMB_API_KEY });\nconst sourceTranscript: CambApi.DubSRTInput = {\n  content: await readFile(\"original.srt\", \"utf-8\"),\n};\nconst spanishTranslation: CambApi.DubTargetSRTInput = {\n  language: CambApi.Languages.ES_ES,\n  content: await readFile(\"spanish.srt\", \"utf-8\"),\n};\n\ntry {\n  const response = await client.dub.endToEndDubbing({\n    video_url: \"https://example.com/your-video.mp4\",\n    source_language: CambApi.Languages.EN_US,\n    target_languages: [CambApi.Languages.ES_ES],\n    source_transcript: sourceTranscript,\n    target_transcripts: [spanishTranslation],\n  });\n  console.log(`Dub task: ${response.task_id}`);\n  // Poll and retrieve output using the example above.\n} catch (error) {\n  if (error instanceof CambApi.UnprocessableEntityError) {\n    console.error(\"Invalid dubbing input:\", error.body);\n  }\n  throw error;\n}\n```\n\nInline object literals also work. `format` defaults to `\"srt\"`; send text, not\na filename, URL, base64 string, or segment array. In a browser, use `await file.text()`\nto read a selected SRT file instead of `node:fs/promises`.\n\nBoth fields are optional: supply the original transcript, translations, both, or\nneither. Targets without a supplied translation use automatic translation.\nUse one target script per language and include that language in `target_languages`.\nThe same inputs work with `.withRawResponse()`.\n\nThe API validates SRT parsing and requires at least one cue. Limits are 2 MiB\nUTF-8 per script, 10 MiB combined, and 100 target scripts. Overlapping and\nout-of-order cues are allowed; the SDK adds no cue-level validation. Invalid\ninputs return HTTP 422 as `CambApi.UnprocessableEntityError`, with field details\nin its `body`. These arguments require backend custom-SRT support.\n\n### 5. Transcription & Subtitles\n\nUse transcription when you need a source-language transcript. Use subtitles\nwhen you also need translated subtitle output. Subtitle create requires a\npublicly accessible `media_url` (JSON body; file upload is not supported).\nBoth support formatted TXT, SRT, and VTT exports.\n\n```javascript\nconst transcription = await client.transcription.createTranscription({\n  language: CambApi.Languages.EN_US,\n  media_url: \"your_accessible_media_url\",\n  formatting_options: {\n    max_segment_duration_in_seconds: 7,\n    min_segment_duration_in_seconds: 1,\n    max_characters_in_segment: 42,\n  },\n});\n\nconst transcript = await client.transcription.getTranscriptionResult({\n  run_id: 123,\n  format_type: CambApi.TranscriptFileFormat.Srt,\n  data_type: CambApi.TranscriptDataType.RawData,\n});\n\nconst subtitleTask = await client.subtitles.createSubtitle({\n  source_language: CambApi.Languages.EN_US,\n  target_languages: [CambApi.Languages.ES_ES],\n  media_url: \"your_accessible_media_url\",\n});\n\nconst subtitles = await client.subtitles.getSubtitleResultForLanguage({\n  run_id: 123,\n  language: CambApi.Languages.ES_ES,\n  format_type: CambApi.TranscriptFileFormat.Vtt,\n  data_type: CambApi.TranscriptDataType.RawData,\n});\n```\n\nSee [`examples/transcription.js`](examples/transcription.js) and\n[`examples/subtitles.js`](examples/subtitles.js) for complete polling examples.\n\n### 6. Live Transcription (Streaming WebSocket)\n\nStream audio over a single WebSocket and receive cumulative interim\ntranscripts, word-level timing, and typed events. The session ships a\nmicrophone helper for both browser (`AudioWorklet`) and Node\n(`node-record-lpcm16`) environments, and the same `on(event)` dispatcher\nas the Python SDK.\n\n```typescript\nimport { CambClient, Microphone, ServerMessageType, bindTranscriptPrinter } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: process.env.CAMB_API_KEY });\n\nconst session = await client.liveTranscription.connect({\n  model: \"boli-v5\",\n  language: \"en-us\",\n  sampleRate: 16000,\n});\n\nsession.on(ServerMessageType.Ready, () => console.log(\"Ready\"));\n\nconst printer = bindTranscriptPrinter(session);\n\nsession.on(ServerMessageType.Closed, (info) => {\n  printer.newline();\n  console.log(`Closed: code=${info.code} reason=${info.reason}`);\n});\n\nawait session.waitUntilReady();\n\n// Node:\nconst mic = Microphone.fromNode({ sampleRate: 16000 });\nawait mic.start();\nawait session.pipe(mic);\n\n// Browser:\n// const mic = await Microphone.fromBrowser({ sampleRate: 16000 });\n// await mic.start();\n// await session.pipe(mic);\n```\n\nOptional peer deps:\n\n```bash\n# Node header-based auth on the WebSocket upgrade\nnpm install ws\n\n# Node microphone capture (requires the host `sox` binary)\nnpm install node-record-lpcm16\n```\n\nPrefer streaming a file (no audio device dependency)? See\n[`examples/live-transcription-file.js`](examples/live-transcription-file.js).\nFor the full event catalog (`Ready`, `Results`, `Final`, `Error`,\n`Closed`), configuration options, and extensibility notes, see the\n[Live Transcription tutorial](https://docs.camb.ai/tutorials/live-transcription-with-sdk)\nand [SDK guide](https://docs.camb.ai/sdk-guides/live-transcription).\n\n### 7. Realtime Speech-to-Speech Translation (Streaming WebSocket)\n\nSpeak (or stream a file) in one language and receive the translation as live\ntext and synthesized speech over a single WebSocket. Audio is PCM16 mono at\n24 kHz in both directions.\n\n```typescript\nimport { CambClient, Microphone, RealtimeServerEventType } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: process.env.CAMB_API_KEY });\n\nconst session = await client.realtime.connect({\n  sourceLanguage: \"en-us\",\n  targetLanguage: \"de-de\",\n});\n\nsession.on(RealtimeServerEventType.TextDone, (event) =>\n  console.log(`[translation] ${event.text}`),\n);\n\nsession.on(RealtimeServerEventType.AudioDelta, (event) => {\n  // event.data is raw PCM16 mono 24 kHz — play it through your speakers\n});\n\nawait session.waitUntilReady();\n\nconst mic = Microphone.fromNode({ sampleRate: 24000 });\nawait mic.start();\nawait session.stream(mic);\n```\n\nRunnable examples:\n[`examples/realtime-translation-microphone.js`](examples/realtime-translation-microphone.js)\n(mic in, translated speech out) and\n[`examples/realtime-translation-file.js`](examples/realtime-translation-file.js)\n(WAV in, translated WAV out — no audio device needed). For the full event\nlist and configuration, see the\n[Realtime Speech Translation tutorial](https://docs.camb.ai/tutorials/realtime-translation-with-sdk)\nand the [WebSocket API reference](https://docs.camb.ai/api-reference/websockets/realtime).\n\n## ⚙️ Advanced Usage & Other Features\n\nThe Camb AI SDK offers a wide range of capabilities beyond these examples, including:\n\n- Voice Cloning\n- Translated TTS\n- Audio Dubbing\n- Transcription (async file/URL jobs)\n- Live Transcription (streaming WebSocket — see Example 6 above)\n- Realtime Speech-to-Speech Translation (streaming WebSocket — see Example 7 above)\n- And more!\n\nPlease refer to the [Official Camb AI API Documentation](https://docs.camb.ai) for a comprehensive list of features and advanced usage patterns.\n\n## 📚 TypeScript Support\n\nThis SDK is written in TypeScript and includes full type definitions. You can use it in TypeScript projects with full IntelliSense support:\n\n```typescript\nimport { CambClient, CambApi } from \"@camb-ai/sdk\";\n\nconst client = new CambClient({ apiKey: \"YOUR_CAMB_API_KEY\" });\n\n// Full type safety\nconst response: AsyncIterable<Uint8Array> = await client.textToSpeech.tts({\n  text: \"Hello world\",\n  language: CambApi.CreateStreamTtsRequestPayload.Language.EnUs,\n  speech_model:\n    CambApi.CreateStreamTtsRequestPayload.SpeechModel.Mars81FlashBeta,\n  voice_id: 20303,\n});\n```\n\n## 📖 Examples\n\nCheck out the `examples/` directory for complete, runnable examples:\n\n- `basic-tts.js` - Basic text-to-speech example\n- `text-to-audio.js` - Sound generation example\n- `dubbing.js` - Video dubbing workflow\n- `transcription.js` - Async transcription with formatting options and TXT/SRT/VTT exports\n- `subtitles.js` - Subtitle job creation, polling, and language-specific TXT/SRT/VTT exports\n- `baseten-provider.js` - Using custom hosting providers\n- `live-transcription-microphone.js` - Stream microphone audio over the WebSocket (uses `node-record-lpcm16`)\n- `live-transcription-file.js` - Stream a local WAV at real-time pace (no audio device required)\n\n## 🔗 Links\n\n- [Documentation](https://docs.camb.ai)\n- [GitHub Repository](https://github.com/Camb-ai/cambai-typescript-sdk)\n- [Python SDK](https://github.com/Camb-ai/cambai-python-sdk)\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","readmeFilename":"README.md"}