{"_id":"@appcitor/react-native-voice-to-text","_rev":"6-79f9aff51eb1994c0f5a98d167ef1b33","name":"@appcitor/react-native-voice-to-text","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@appcitor/react-native-voice-to-text","version":"0.1.0","keywords":["react-native","ios","android"],"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","_id":"@appcitor/react-native-voice-to-text@0.1.0","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"002ed9706279c296f8572bc33294195fa44ac282","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.1.0.tgz","fileCount":43,"integrity":"sha512-IkQsboYd64n6VQx14NZB/wtGTFGaYYkPahHEd/IBb89O4t55IvDruqNdt5ClFumqcQRnRiPLjVd/c+s71BQxIw==","signatures":[{"sig":"MEUCIQC7RaW7Rzl/pavbAPW5pMjH05P0IZmip/pYl+qgY1s4SAIgTOBhQewx5duAxyEtfdTZffXG2Y9blAgxLnYzOuqGH38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102973},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"23a0c9de945d12cce184640ce27dc496e6e871d6","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-voice-to-text_0.1.0_1742792503161_0.48790167620420344","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}},"0.2.0":{"name":"@appcitor/react-native-voice-to-text","version":"0.2.0","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","_id":"@appcitor/react-native-voice-to-text@0.2.0","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"9e5f8ef33a0ed33ee58d2dbe63280afddf277f0a","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.2.0.tgz","fileCount":43,"integrity":"sha512-f+2S5DdAV6yKABgJdZphZaQT+OQL+DFo/RhRFUrka5t1psWWCatF8vhzm3xQe7QwqA+WJjmXAHGZWHNkDunOYA==","signatures":[{"sig":"MEQCIBRkxruJv9sSKA9FKDduZrCI4JJNnxSudczoQWEoDFIAAiA9XAldNc9wjitk77iCt6Xd09/V3FbdUHc4nJj4Y331oA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103176},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"1adde6cce7264d551c92f4a2b4468144bc4852e7","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-voice-to-text_0.2.0_1742794656781_0.2862594202169557","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}},"0.2.1":{"name":"@appcitor/react-native-voice-to-text","version":"0.2.1","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","_id":"@appcitor/react-native-voice-to-text@0.2.1","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"968a6c468944b440b80f3428e6bb1dd89f3a7391","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.2.1.tgz","fileCount":43,"integrity":"sha512-HPZhZ3LoYrZVGthsD5+X15b1PUG/jJac1QcISTYuFXNQl8A1y2GVvcxTc8lBRJAMe+b8ac7Evsvyr9gpMa4Z3w==","signatures":[{"sig":"MEUCIQCcXI9ZrzKMgflE0r9WZqhyJBeFvYbNxuoFVhrLbdqfRQIgRuf8qivPLKhK0mjJdDIsfF5qtgTvrYwYOtUS9ybqq8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103660},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"697412626e9d7b820328fe1a532e22c0c2e84515","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-voice-to-text_0.2.1_1742817779461_0.6471228569555538","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}},"0.3.0":{"name":"@appcitor/react-native-voice-to-text","version":"0.3.0","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","_id":"@appcitor/react-native-voice-to-text@0.3.0","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"5391e508ca2d1abe3eda6224e052bfe825edc785","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.3.0.tgz","fileCount":43,"integrity":"sha512-+7op7/v0inkgt2jkW+tQgILc2IHZM+6sXrzXX5VAYzt5Egy67DJzxoQ4hmOLChLJZmfRN4tZ2Us4+Yd/EttoYg==","signatures":[{"sig":"MEUCIQD6wf4SKV/+Lm1ipOdg2P1TY7k0DkKzdReO+Ipzuwuf1wIgKzI26jl9IrZhAi6nD7k2nm20mZU/zWdTpcVfuF3YtWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDdujxUNBq04bHJDxdRvyrPJue67l2QAqZozGwrM0LSIgIgfpUNbTubAZ04gBjIpeFcPm1PYj9M6ESstNX2WL20sW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142451},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"aab9b8efaca75f2a46493d5a434c1d304d87e482","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-voice-to-text_0.3.0_1788718503545_0.09460712070473076","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}},"0.3.1":{"name":"@appcitor/react-native-voice-to-text","version":"0.3.1","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","_id":"@appcitor/react-native-voice-to-text@0.3.1","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"24be9ef3a2238deaa518763e4c076b6082c07275","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.3.1.tgz","fileCount":43,"integrity":"sha512-VLq3+VgYx25tOryordVlhN95TteiWWeR/pRxgR39/EY4V+PflOujHafC9nkOsZ3NlL2pJ3+Li0C98md6AQAqww==","signatures":[{"sig":"MEYCIQD8rI+RPJETy1wo1NzhcVog/JxZJj9Yk83TJDZQO0seFQIhAMzaT6j2R7bxFDZjOcAdVFpE9tp0t9Og1jDwNHhyEBS+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDP93FLSWRYtWy4/sgBY7x52vmtN5lXbeYkvuqfD20i9AiEA58W4u6zFWGH74QPDmrB/QHLUiMEjKtFWi1RMTyGx5Ss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145152},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"eb4c30aa626d03167748e5813a4cb07829eddf7e","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-voice-to-text_0.3.1_1788750729660_0.12314568111266078","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}},"0.3.2":{"_id":"@appcitor/react-native-voice-to-text@0.3.2","bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"dist":{"shasum":"2d50c58e8f939421a2321e0bce34fe9fd4720f3f","tarball":"https://registry.npmjs.org/@appcitor/react-native-voice-to-text/-/react-native-voice-to-text-0.3.2.tgz","fileCount":43,"integrity":"sha512-LY91jnk8gs3+pniM3X4drwi+VaO22mycm0G+CMkL6gksaapikBrCcV/2eNajGQdWlmZ6kk3Q84L1M1qleYXuXw==","signatures":[{"sig":"MEQCIET36UUk5/+6imYwNiSns71ie4/GJLdENwNmyqfqzN5NAiAHOitJ5f/1n7++jN4Qod+lEgKC3TsXrruN1fpUFYMf8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDx+birWntqYMqXzbPnp9xJndODP1nOtxRjDelRNOtRcwIgL4TlBxwzIppvN9n9KpUXphTjjAHyyU+lcn2wBe28z/A="}],"unpackedSize":146334},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/commonjs/index.js","name":"@appcitor/react-native-voice-to-text","author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"module":"./lib/module/index.js","source":"./src/index.tsx","exports":{".":{"import":{"types":"./lib/typescript/module/src/index.d.ts","default":"./lib/module/index.js"},"require":{"types":"./lib/typescript/commonjs/src/index.d.ts","default":"./lib/commonjs/index.js"}}},"gitHead":"59545ee45467c85b4cd5310ece7cba089c158a21","license":"MIT","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace react-native-voice-to-text-example","prepare":"bob build","release":"release-it","typecheck":"tsc"},"version":"0.3.2","_npmUser":{"name":"appcitor","email":"cbuddhika3@gmail.com"},"homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"This can use to convert voice to text real time in device","directories":{},"maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"resolutions":{"@types/react":"^18.2.44","@rollup/rollup-darwin-arm64":"4.37.0","@rollup/rollup-linux-x64-gnu":"4.37.0"},"_nodeVersion":"22.14.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}],"react/react-in-jsx-scope":"off"},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"codegenConfig":{"name":"RNVoiceToTextSpec","type":"modules","android":{"javaPackageName":"com.voicetotext"},"jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"includesGeneratedCode":true},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"19.0.0","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","commitlint":"^19.6.1","release-it":"^17.10.0","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^19.0.12","react-native":"0.78.1","@types/react-native":"^0.73.0","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.36.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.73.1","@commitlint/config-conventional":"^19.6.0","@release-it/conventional-changelog":"^9.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-voice-to-text_0.3.2_1788774112993_0.8389333986055225"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["codegen",["commonjs",{"esm":true}],["module",{"esm":true}],["typescript",{"esm":true,"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","version":"0.48.5","languages":"kotlin-objc"}}},"time":{"created":"2025-03-24T05:01:43.060Z","modified":"2026-09-07T09:41:53.305Z","0.1.0":"2025-03-24T05:01:43.356Z","0.2.0":"2025-03-24T05:37:36.972Z","0.2.1":"2025-03-24T12:02:59.632Z","0.3.0":"2026-09-06T18:15:03.640Z","0.3.1":"2026-09-07T03:12:09.750Z","0.3.2":"2026-09-07T09:41:53.076Z"},"bugs":{"url":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text/issues"},"author":{"url":"https://github.com/ChathuraLiyanapathirana","name":"ChathuraBuddhika","email":"cbuddhika3@gmail.com"},"license":"MIT","homepage":"https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text#readme","keywords":["react-native","ios","android","voice-to-text","speech-recognition","speech-to-text","voice-recognition","transcription","dictation","audio-recognition","stt","mobile","native-module"],"repository":{"url":"git+https://github.com/ChathuraLiyanapathirana/react-native-voice-to-text.git","type":"git"},"description":"This can use to convert voice to text real time in device","maintainers":[{"name":"appcitor","email":"cbuddhika3@gmail.com"}],"readme":"# react-native-voice-to-text\n\nSpeech-to-text for React Native using the platform's built-in speech recognition — `SFSpeechRecognizer` on iOS, `SpeechRecognizer` on Android. No API keys, no third-party service.\n\n## Contents\n\n- [Demo](#demo)\n- [Key Features](#key-features)\n- [Platform & Architecture Support](#platform--architecture-support)\n- [Installation](#installation)\n- [Setup & Configuration](#setup--configuration)\n- [Quick start](#quick-start)\n- [API](#api)\n- [Continuous mode](#continuous-mode-push-to-talk)\n- [Platform notes](#platform-notes)\n- [Development guide](./DEVELOPMENT.md) — run the example app and work on the library\n\n## Demo\n\n### Android\n\n![Android demo 1](https://raw.githubusercontent.com/ChathuraLiyanapathirana/react-native-voice-to-text/main/assets/android/v1.gif) ![Android demo 2](https://raw.githubusercontent.com/ChathuraLiyanapathirana/react-native-voice-to-text/main/assets/android/v2.gif)\n\n### iOS\n\n![iOS demo 1](https://raw.githubusercontent.com/ChathuraLiyanapathirana/react-native-voice-to-text/main/assets/ios/v1.gif) ![iOS demo 2](https://raw.githubusercontent.com/ChathuraLiyanapathirana/react-native-voice-to-text/main/assets/ios/v2.gif)\n\n## Key Features\n\n- **Built-in platform recognition** — `SFSpeechRecognizer` on iOS, `SpeechRecognizer` on Android. No API keys, no third-party service, nothing to configure. The OS decides whether recognition runs on the device or on Apple's / Google's servers; see [Offline use](#offline-use).\n- **Real-time partial results** while the user is still speaking.\n- **Continuous mode** for push-to-talk and dictation, so a session survives normal pauses instead of ending after about a second of silence.\n- **Volume and raw audio buffer events**, for a level meter or your own audio processing.\n- **Automatic error recovery** — a dropped connection to the Android recognition service is retried automatically, and a session that errors out mid-way still delivers whatever text was already recognised instead of discarding it.\n- **Confidence scoring** per transcription, with per-segment scores also available on iOS.\n- **Runtime language switching** — read and set the recognition language without restarting the app.\n- **Event-driven API** (`addEventListener`) with payload types inferred per event.\n- **Full TypeScript types.**\n\n## Platform & Architecture Support\n\n| | iOS | Android |\n|---|---|---|\n| Speech engine | `SFSpeechRecognizer` | `SpeechRecognizer` |\n| OS version | Follows your React Native version's own minimum iOS target — this library sets no extra floor | API 24+ (Android 7.0+) |\n| React Native architecture | Old (bridge) and New (TurboModules/Fabric), auto-detected — no config needed | Old (bridge) and New (TurboModules), auto-detected — no config needed |\n| CPU / ABI | Compiled from source on every build — no precompiled framework to fall out of sync | `armeabi-v7a`, `arm64-v8a`, `x86`, `x86_64` — no bundled native binaries, so there's no ABI mismatch risk and full compatibility with 16 KB memory page sizes |\n\n## Installation\n\n```sh\nnpm install @appcitor/react-native-voice-to-text\n```\n\nor\n\n```sh\nyarn add @appcitor/react-native-voice-to-text\n```\n\nThe same package works for both a bare React Native app and an Expo app — see [Setup & Configuration](#setup--configuration) for what each one needs afterwards.\n\n## Setup & Configuration\n\n### Expo Projects\n\nThis library ships no Expo config plugin, so declare the permissions directly in `app.json` (or `app.config.js`):\n\n```json\n{\n  \"expo\": {\n    \"ios\": {\n      \"infoPlist\": {\n        \"NSMicrophoneUsageDescription\": \"This app needs access to your microphone for speech recognition\",\n        \"NSSpeechRecognitionUsageDescription\": \"This app needs access to speech recognition to convert your voice to text\"\n      }\n    },\n    \"android\": {\n      \"permissions\": [\"RECORD_AUDIO\"]\n    }\n  }\n}\n```\n\nThis library contains native code, so it needs a [development build](https://docs.expo.dev/develop/development-builds/introduction/) — it will not run inside **Expo Go**. After configuring the permissions above, generate the native projects and run the dev client:\n\n```sh\nnpx expo prebuild\nnpx expo run:ios     # or: npx expo run:android\n```\n\nThe Android runtime permission request below is still required — it's the same call regardless of Expo or bare React Native.\n\n### Bare React Native Projects\n\n**iOS:** Add these two keys to `Info.plist`. Both prompts appear the first time `startListening()` is called, not at app launch.\n\n```xml\n<key>NSMicrophoneUsageDescription</key>\n<string>This app needs access to your microphone for speech recognition</string>\n<key>NSSpeechRecognitionUsageDescription</key>\n<string>This app needs access to speech recognition to convert your voice to text</string>\n```\n\n**Android:** Declare the permission in `AndroidManifest.xml`:\n\n```xml\n<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />\n```\n\n...and request it at runtime, since `startListening()` will reject with `PERMISSION_DENIED` if you don't:\n\n```js\nimport { PermissionsAndroid, Platform } from 'react-native';\n\nasync function requestMicrophonePermission() {\n  if (Platform.OS !== 'android') return true;\n  const granted = await PermissionsAndroid.request(\n    PermissionsAndroid.PERMISSIONS.RECORD_AUDIO\n  );\n  return granted === PermissionsAndroid.RESULTS.GRANTED;\n}\n```\n\n## Quick start\n\n```tsx\nimport { useEffect, useState } from 'react';\nimport { View, Button, Text } from 'react-native';\nimport VoiceToText, { VoiceToTextEvents } from '@appcitor/react-native-voice-to-text';\n\nexport default function SpeechExample() {\n  const [text, setText] = useState('');\n  const [isListening, setIsListening] = useState(false);\n\n  useEffect(() => {\n    const subscriptions = [\n      VoiceToText.addEventListener(VoiceToTextEvents.START, () => setIsListening(true)),\n      VoiceToText.addEventListener(VoiceToTextEvents.END, () => setIsListening(false)),\n      VoiceToText.addEventListener(VoiceToTextEvents.RESULTS, (event) => setText(event.value)),\n    ];\n    return () => {\n      VoiceToText.destroy();\n      subscriptions.forEach((s) => s.remove());\n    };\n  }, []);\n\n  const toggle = () =>\n    isListening ? VoiceToText.stopListening() : VoiceToText.startListening();\n\n  return (\n    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n      <Text>{text || 'Say something...'}</Text>\n      <Button title={isListening ? 'Stop' : 'Start'} onPress={toggle} />\n    </View>\n  );\n}\n```\n\nA fuller example, including the hold-to-talk button below, lives in [`example/`](example).\n\n## API\n\n### Methods\n\n| Method | Description | Returns |\n|---|---|---|\n| `startListening(options?)` | Starts a session. `{ continuous: true }` keeps it alive across pauses — see [Continuous mode](#continuous-mode-push-to-talk). Rejects with `ALREADY_LISTENING`, `PERMISSION_DENIED`, `NOT_AVAILABLE` or `AUDIO_ERROR`. | `Promise<string>` |\n| `stopListening()` | Stops capturing audio. The session's final `RESULTS` (if any) and `END` still follow. | `Promise<string>` |\n| `destroy()` | Cancels the session and releases native resources. Safe to call any time; `startListening()` works again afterwards. | `Promise<string>` |\n| `getRecognitionLanguage()` | Language tag the next session will use. | `Promise<string>` |\n| `setRecognitionLanguage(tag)` | Sets the language (e.g. `'en-US'`) for the next `startListening()`. A running session keeps its language. | `Promise<boolean>` |\n| `isRecognitionAvailable()` | Whether the device can recognise speech at all. | `Promise<boolean>` |\n| `getSupportedLanguages()` | Language tags the device reports as recognisable (iOS: queried from the system; Android: a static list — see [platform notes](#android)). | `Promise<string[]>` |\n| `addEventListener(name, handler)` | Subscribes to a `VoiceToTextEvents` value. | `EmitterSubscription` |\n| `removeAllListeners(name)` | Removes every listener for that event. | `void` |\n\n### Events\n\nSubscribe with `VoiceToText.addEventListener(VoiceToTextEvents.X, handler)`. The payload type for each is inferred automatically.\n\n| Event | Fires when | Payload |\n|---|---|---|\n| `START` | A session starts capturing audio. | — |\n| `BEGIN` | The user starts speaking. | — |\n| `END` | The session finishes — exactly once per `START`, after the final `RESULTS` or `ERROR`. | — |\n| `RESULTS` | Final transcription is ready. | `{ value, isFinal: true, results }` |\n| `PARTIAL_RESULTS` | A partial transcription arrives while speaking. | `{ value, isFinal: false, results }` |\n| `ERROR` | Something went wrong. | `{ code, message }` |\n| `VOLUME_CHANGED` | The input level changes. Android: dB from the recognizer. iOS: linear RMS, `0`–`1`. | `{ value }` |\n| `AUDIO_BUFFER` | A raw audio buffer is available. Android: recognizer bytes. iOS: 32-bit float PCM, first channel. | `{ buffer }` (base64) |\n\n`VOLUME_CHANGED` and `AUDIO_BUFFER` only start flowing once something is subscribed, and stop once every listener is removed — they carry a real cost, so don't listen for them unless you use them.\n\n`results.transcriptions` is `Array<{ text, confidence, segments? }>`. `confidence` is `0`–`1`; on Android it's only set on final results, on iOS it's the average of the segment confidences (also included).\n\n## Continuous mode (push-to-talk)\n\nBy default a session ends as soon as the recognizer decides you're done talking — on Android, after roughly a second of silence. Pass `continuous: true` to keep it running until you call `stopListening()`:\n\n```tsx\n<Pressable\n  onPressIn={() => VoiceToText.startListening({ continuous: true })}\n  onPressOut={() => VoiceToText.stopListening()}\n>\n  <Text>Hold to talk</Text>\n</Pressable>\n```\n\nWhat's different in continuous mode:\n\n- The library silently restarts the recognizer each time it ends a segment on its own. You still get exactly one `START` and one `END` for the whole session.\n- Every `PARTIAL_RESULTS` and `RESULTS` carries the text of the **whole session so far**, not just the current segment.\n- The final `RESULTS` (`isFinal: true`) arrives once, after `stopListening()`.\n- If a session fails partway through, you get an `ERROR`, then whatever text was already recognised is delivered as the final `RESULTS`, then `END` — you don't lose what was already said.\n\n## Platform notes\n\n### Offline use\n\nThe library makes no network calls itself, but the system recognizer it hands audio to may. Neither platform is forced into on-device mode today (`requiresOnDeviceRecognition` on iOS and `createOnDeviceSpeechRecognizer` on Android are not used), so whether recognition works without a connection depends on the device:\n\n- **iOS**: devices with on-device support (iOS 13+, roughly iPhone XS and newer) and a downloaded language work offline; Apple falls back to on-device automatically. Older devices or languages without an on-device model fail with an `ERROR` event.\n- **Android**: devices with the offline speech pack installed for the chosen language (Pixel, recent Samsung) usually work offline. Others fail with `ERROR_NETWORK` or `ERROR_NETWORK_TIMEOUT`. `SpeechRecognizer.isRecognitionAvailable()` can return true even when no offline recognizer exists, so this only surfaces when you start listening.\n\nIf you need on-device recognition guaranteed, for example for a privacy claim, don't rely on this library for it yet.\n\n### Android\n\n- `ERROR_NO_MATCH` (7) and `ERROR_SPEECH_TIMEOUT` (6) mean \"nothing to recognise\", not a failure — treat them as an empty result. If they arrive after partial results already came in, the library delivers that text as `RESULTS` instead of raising an error.\n- `stopListening()` before any speech was detected cancels immediately. Otherwise it waits up to 5s for a final result before giving up and using the last partial.\n- A dropped connection to the recognition service (`ERROR_SERVER_DISCONNECTED`, `ERROR_CLIENT`, `ERROR_RECOGNIZER_BUSY`) is retried automatically, up to 3 times, whenever doing so won't lose anything already said. You only see an `ERROR` once retries are exhausted — call `startListening()` again if you do.\n- `getSupportedLanguages()` returns a fixed list of common tags, not a device query — Android has no reliable API for this. Setting a language outside that list still works if the device supports it.\n\n### iOS\n\n- Uses the `PlayAndRecord` audio session category while listening, and deactivates it again on `END`, so the host app's own audio keeps working.\n- Calling `startListening()` while a previous session is still finishing cancels that session first (you get its `END`, then the new `START`). Wait for `END` if you need its final transcription.\n\n## License\n\nMIT\n\n","readmeFilename":"README.md"}