{"_id":"@amerandish/farsava","_rev":"14-74ed76a31072cde8f62a94a3d9d9f4ca","time":{"created":"2020-09-16T10:14:21.174Z","0.3.1":"2020-09-16T10:14:21.562Z","modified":"2022-04-04T13:48:06.322Z"},"name":"@amerandish/farsava","dist-tags":{"latest":"0.3.1"},"versions":{"0.3.1":{"name":"@amerandish/farsava","version":"0.3.1","description":"farsava javascript sdk","main":"lib/farsava.js","types":"typings/farsava.d.ts","private":false,"homepage":"https://github.com/amerandish/farsava-sdk-javascript","repository":{"type":"git","url":"git+https://github.com/amerandish/farsava-sdk-javascript.git"},"license":"LGPL-3.0-or-later","scripts":{"test":"jest","prepare":"npm run build","build":"npx tsc","build:browser":"webpack --config webpack/webpack.browser.js -p -m","build:browser:debug":"webpack --config webpack/webpack.browser.js","lint":"eslint src/ --ext .ts"},"keywords":["Farsava","NodeJs","Javascript","API","SDK","ASR","TTS"],"author":{"name":"Amin Taghikhani","email":"amin@amerandish.com"},"devDependencies":{"@types/axios":"^0.14.0","@types/jest":"^26.0.13","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","copy-webpack-plugin":"^6.1.0","eslint":"^7.9.0","jest":"^26.4.2","terser-webpack-plugin":"^4.1.0","ts-jest":"^26.3.0","ts-loader":"^8.0.3","ts-node":"^9.0.0","tslint":"^6.1.3","typescript":"^4.0.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"dependencies":{"axios":"^0.20.0","recordrtc":"^5.6.1"},"gitHead":"5fb2e9d69b04d651df2c5e4b4286cf76a14a348d","bugs":{"url":"https://github.com/amerandish/farsava-sdk-javascript/issues"},"_id":"@amerandish/farsava@0.3.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VBvuqjIMNcz/+ogFiLjsdZMdEpVdsYrC+M3v3cvyzbnbAvpaeu2NKzRxYJbeqR6p4mQGoEEHUZv2FPqNMOgeUg==","shasum":"4bbc577bfe75848caea1c06e6ecc8c7e62f0007d","tarball":"https://registry.npmjs.org/@amerandish/farsava/-/farsava-0.3.1.tgz","fileCount":43,"unpackedSize":65568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYeV9CRA9TVsSAnZWagAABUEP/3/YCLwXpu/PPC2Xi4YZ\nofGvZwjK7U0eHYYiKunFCyq1lN2w2/EYqVTXEsf/K8zNR7xrJQS+TsUkWT8n\nBmGblPzCCQHASk64p7JX14lZI8uqb3qWu8jQt2Qma76UmPudfMhEkuiVbUns\ne5gpSUiVYD/JBWloMXYLc9U7HODEcNKAz1egNA7sDG2mgRKiDZhzRWXrXsB4\nI24xwGj5u7qaUaX4Zpf0ECOTe2nunZCn3LNarTSJWSPrvJz2k+2x/GUX6S3P\n21SPvw7QHSlOOza2fvPW/a592DjAWhF2KTb/C6HzwlKnk1v1QQvrroco1Q9R\nHF9YRP/gecH1QLeGwvynjPIKF/TEPkNJ4oqHIV32tv7w7dHh5lvv6qhnAiSJ\ndr5nc8kLByEZUrSM/FRIYXhAy73y8YlDlq28ZEjrzt3cW4kyDFRMG6QOfv5g\nSJYKuUYl+bpCuqVFBqJVg1mZri+n0+qOkyLECkECmTDgNY0KqzEYjYCaQ/Y3\nmqvVCgoOb5haipNm31cAh+UJdkq74ueSAAbwjDNbVFkmJS6NzHTy4lZaKANp\nuLM2+jYDyE88i4XV22M768Lj8FapXTj+Njrsv0fpprcHelWeeTxQdx2NvgC5\nMCnjvBydr49mBlRma9sbDFguK44llRXW3jvthmt0SkN3jbx6vpT/qmLZNFg8\ntH/E\r\n=cW2k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB9xTql/6QDalX91knW1vPNly2hFvDNGZQzCNB1kxBpzAiBwdH4sSdR7q9wlyO3CQExl8AGT9SWuW8WRRbs4FRXGoA=="}]},"maintainers":[{"name":"amin_amerandish","email":"amin@amerandish.com"}],"_npmUser":{"name":"amin_amerandish","email":"amin@amerandish.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/farsava_0.3.1_1600251261437_0.10507371112508257"},"_hasShrinkwrap":false}},"maintainers":[{"name":"amin_amerandish","email":"amin@amerandish.com"}],"description":"farsava javascript sdk","homepage":"https://github.com/amerandish/farsava-sdk-javascript","keywords":["Farsava","NodeJs","Javascript","API","SDK","ASR","TTS"],"repository":{"type":"git","url":"git+https://github.com/amerandish/farsava-sdk-javascript.git"},"author":{"name":"Amin Taghikhani","email":"amin@amerandish.com"},"bugs":{"url":"https://github.com/amerandish/farsava-sdk-javascript/issues"},"license":"LGPL-3.0-or-later","readme":"<div dir='rtl'>\n\n# Farsava Javascript SDK\n\n## نصب\n\n<div dir='ltr'>\n\n```html\n<script src=\"farsava-sdk.js\" type=\"text/javascript\"></script>\n```\n\n<div dir='rtl'>\n\nیا\n\n</div>\n\n```bash\nnpm install @amerandish/farsava\n```\n\n</div>\n\n## استفاده\n\nجهت استفاده از کیت توسعه فارس آوا ابتدا نیاز است یک آبجکت از `Farsava.SDK` درست کنید\n\n<br>\n\n| نام                | توضیحات           |\n| ------------------ | ----------------- |\n| <REST_API_BASEURL> | آدرس سرور API     |\n| <ASR_LIVE_URL>     | آدرس سرور وب سوکت |\n| <JWT_TOKEN>        | توکن              |\n\n<br>\n\n<div dir='ltr'>\n\n```javascript\nconst sdk = new Farsava.SDK({\n    baseUrl: \"<REST_API_BASEURL>\",\n    liveUrl: \"<ASR_LIVE_URL>\",\n    apiKey: \"<JWT_TOKEN>\",\n});\n```\n\n</div>\n\n## سرویس ها\n\n---\n\n-   گفتار به نوشتار\n-   نوشتار به گفتار\n-   گفتار به نوشتار به صورت Live\n\n### مجموعه سرویس های گفتار به نوشتار\n\n-   #### بررسی سلامت سرویس\n\n<br>\n\n| عنوان     | نوع                             | توضیحات       |\n| --------- | ------------------------------- | ------------- |\n| مدل ورودی | -                               | -             |\n| مدل خروجی | Farsava.Models.HealthCheckModel | نتیجه درخواست |\n\n<br>\n\n<div dir='ltr'>\n\n-   async/await\n\n    ```javascript\n    try {\n        const response = await sdk.speech.healthCheck();\n        // response model type is Farsava.Models.HealthCheckModel\n        // handle response\n    } catch (err) {\n        // handle error\n    }\n    ```\n\n-   then/catch\n\n    ```javascript\n    sdk.speech\n        .healthCheck()\n        .then((response) => {\n            // response model type is Farsava.Models.HealthCheckModel\n            // handle response\n        })\n        .catch((err) => {\n            // handle error\n        });\n    ```\n\n</div>\n\n-   #### تبدیل گفتار به نوشتار برای فایل های صوتی با زمان کمتر از ۱۵ ثانیه\n\n<br>\n\n| عنوان     | نوع                             | توضیحات                         |\n| --------- | ------------------------------- | ------------------------------- |\n| مدل ورودی | Farsava.Models.ASRRequestModel  | تنظیمات اولیه جهت ارسال درخواست |\n| مدل خروجی | Farsava.Models.ASRResponseModel | نتیجه درخواست                   |\n\n<br>\n\n<div dir='ltr'>\n\n-   async/await\n\n    ```javascript\n    try {\n        const base64AudioData = \"\";\n        const config = new Farsava.Models.RecognitionConfigModel({\n            audioEncoding: \"LINEAR16\",\n            sampleRateHertz: 16000,\n            languageCode: \"fa\",\n            maxAlternatives: 1,\n            profanityFilter: true,\n            asrModel: \"default\",\n            languageModel: \"general\",\n        });\n        const audio = new Farsava.Models.RecognitionAudioModel({\n            data: base64AudioData,\n        });\n        const model = new Farsava.Models.ASRRequestModel({ config, audio });\n        const response = await sdk.speech.asr(model);\n        // response model type is Farsava.Models.ASRResponseModel\n        // handle response\n    } catch (err) {\n        // handle error\n    }\n    ```\n\n-   then/catch\n\n    ```javascript\n    const base64AudioData = \"\";\n    const config = new Farsava.Models.RecognitionConfigModel({\n        audioEncoding: \"LINEAR16\",\n        sampleRateHertz: 16000,\n        languageCode: \"fa\",\n        maxAlternatives: 1,\n        profanityFilter: true,\n        asrModel: \"default\",\n        languageModel: \"general\",\n    });\n    const audio = new Farsava.Models.RecognitionAudioModel({\n        data: base64AudioData,\n    });\n    const model = new Farsava.Models.ASRRequestModel({ config, audio });\n    sdk.speech\n        .asr(model)\n        .then((response) => {\n            // response model type is Farsava.Models.ASRResponseModel\n            // handle response\n        })\n        .catch((err) => {\n            // handle error\n        });\n    ```\n\n</div>\n\n### مجموعه سرویس های نوشتار به گفتار\n\n-   #### بررسی سلامت سرویس\n\n<br>\n\n| عنوان     | نوع                             | توضیحات       |\n| --------- | ------------------------------- | ------------- |\n| مدل ورودی | -                               | -             |\n| مدل خروجی | Farsava.Models.HealthCheckModel | نتیجه درخواست |\n\n<br>\n\n<div dir='ltr'>\n\n-   async/await\n\n    ```javascript\n    try {\n        const response = await sdk.voice.healthCheck();\n        // response model type is Farsava.Models.HealthCheckModel\n        // handle response\n    } catch (err) {\n        // handle error\n    }\n    ```\n\n-   then/catch\n\n    ```javascript\n    sdk.voice\n        .healthCheck()\n        .then((response) => {\n            // response model type is Farsava.Models.HealthCheckModel\n            // handle response\n        })\n        .catch((err) => {\n            // handle error\n        });\n    ```\n\n</div>\n\n-   #### تبدیل نوشتار به گفتار\n\n<br>\n\n| عنوان     | نوع                            | توضیحات                                                     |\n| --------- | ------------------------------ | ----------------------------------------------------------- |\n| مدل ورودی | Farsava.Models.TTSRequestModel | تنظیمات اولیه جهت ارسال درخواست                             |\n| مدل خروجی | string                         | یک رشته حاوی اطلاعات صوت مورد نظر که به فرمت base64 می باشد |\n\n<br>\n\n<div dir='ltr'>\n\n-   async/await\n\n    ```javascript\n    try {\n        const text = \"\";\n        const synthesisInput = new Farsava.Models.TTSSynthesisInputModel({\n            text: text,\n        });\n        const voiceConfig = new Farsava.Models.TTSVoiceConfigModel({\n            languageCode: \"fa\",\n            voiceId: \"b6e9c993-729e-4e0f-955b-f229cf1f77ee\",\n            name: \"default\",\n            gender: \"female\",\n        });\n        const audioConfig = new Farsava.Models.TTSAudioConfigModel({\n            audioEncoding: \"LINEAR16\",\n            speakingRate: 1,\n            pitch: 0,\n            volumeGainDb: 0,\n            sampleRateHertz: 22050,\n            bitRate: 0,\n        });\n        const model = new Farsava.Models.TTSRequestModel({\n            synthesisInput,\n            voiceConfig,\n            audioConfig,\n        });\n        const response = await sdk.voice.tts(model);\n        // response model type is base64 string contain audio\n        // handle response\n    } catch (err) {\n        // handle error\n    }\n    ```\n\n-   then/catch\n\n    ```javascript\n    const text = \"\";\n    const synthesisInput = new Farsava.Models.TTSSynthesisInputModel({\n        text: text,\n    });\n    const voiceConfig = new Farsava.Models.TTSVoiceConfigModel({\n        languageCode: \"fa\",\n        voiceId: \"b6e9c993-729e-4e0f-955b-f229cf1f77ee\",\n        name: \"default\",\n        gender: \"female\",\n    });\n    const audioConfig = new Farsava.Models.TTSAudioConfigModel({\n        audioEncoding: \"LINEAR16\",\n        speakingRate: 1,\n        pitch: 0,\n        volumeGainDb: 0,\n        sampleRateHertz: 22050,\n        bitRate: 0,\n    });\n    const model = new Farsava.Models.TTSRequestModel({\n        synthesisInput,\n        voiceConfig,\n        audioConfig,\n    });\n    sdk.speech\n        .asr(model)\n        .then((response) => {\n            // response model type is base64 string contain audio\n            // handle response\n        })\n        .catch((err) => {\n            // handle error\n        });\n    ```\n\n</div>\n\n### مجموعه سرویس های گفتار به نوشتار Live\n\n-   #### تبدیل گفتار به نوشتار\n\n<br>\n\n| عنوان     | نوع                             | توضیحات                                                    |\n| --------- | ------------------------------- | ---------------------------------------------------------- |\n| مدل ورودی | string                          | یک رشته حاوی اطلاعات فایل ورودی که به base64 تبدیل شده است |\n| مدل خروجی | Farsava.Models.ASRResponseModel | نتیجه درخواست                                              |\n\n<br>\n<div dir='ltr'>\n\n-   open socket connection\n\n    ```javascript\n    sdk.live.openConnection((err, data) => {\n        console.log(\"err\", err);\n        console.log(\"data\", data);\n    });\n    ```\n\n-   send with interval\n\n    ```javascript\n    const CHUNK_SIZE = 16000;\n    const INTERVAL_DURATION = 1000; // in milliseconds\n    sdk.live.sendChunkAndInterval(base64AudioData);\n    ```\n\n</div>\n\n## مدل ها\n\n-   مدل نتیجه درخواست سلامت سرویس (Farsava.Models.HealthCheckModel)\n\n      <div dir='ltr'>\n\n    | Field   | Type   | Required | Accept Values |\n    | ------- | ------ | -------- | ------------- |\n    | status  | string | &check;  |               |\n    | message | string | &check;  |               |\n    | version | string | &check;  |               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.ASRRequestModel)\n\n      <div dir='ltr'>\n\n    | Field  | Type                                  | Required | Accept Values |\n    | ------ | ------------------------------------- | -------- | ------------- |\n    | config | Farsava.Models.RecognitionConfigModel | &check;  |               |\n    | audio  | Farsava.Models.RecognitionAudioModel  | &check;  |               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.RecognitionConfigModel)\n\n      <div dir='ltr'>\n\n    | Field           | Type    | Required | Accept Values |\n    | --------------- | ------- | -------- | ------------- |\n    | audioEncoding   | string  | &check;  | `\"LINEAR16\"`  |\n    | sampleRateHertz | number  | &check;  | `16000`       |\n    | languageCode    | string  | &check;  | `\"fa\"`        |\n    | maxAlternatives | number  | &check;  | `1`           |\n    | profanityFilter | boolean | &check;  | `true`        |\n    | asrModel        | string  | &check;  | `\"default\"`   |\n    | languageModel   | string  | &check;  | `\"general\"`   |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.RecognitionAudioModel)\n\n      <div dir='ltr'>\n\n    | Field | Type   | Required | Accept Values |\n    | ----- | ------ | -------- | ------------- |\n    | data  | string | &check;  |               |\n\n      </div>\n\n-   مدل نتیجه درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.ASRResponseModel)\n\n      <div dir='ltr'>\n\n    | Field           | Type                                         | Required | Accept Values |\n    | --------------- | -------------------------------------------- | -------- | ------------- |\n    | transcriptionId | string                                       | &check;  |               |\n    | duration        | number                                       | &check;  |               |\n    | inferenceTime   | number                                       | &check;  |               |\n    | status          | string                                       | &check;  |               |\n    | results         | Array[Farsava.Models.RecognitionResultModel] | &check;  |               |\n\n      </div>\n\n-   مدل نتیجه درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.RecognitionResultModel)\n\n      <div dir='ltr'>\n\n    | Field      | Type                                       | Required | Accept Values |\n    | ---------- | ------------------------------------------ | -------- | ------------- |\n    | transcript | string                                     | &check;  |               |\n    | confidence | number                                     | &check;  |               |\n    | words      | Array[Farsava.Models.RecognitionWordModel] | &check;  |               |\n\n      </div>\n\n-   مدل نتیجه درخواست به سامانه تبدیل گفتار به نوشتار (Farsava.Models.RecognitionWordModel)\n\n      <div dir='ltr'>\n\n    | Field      | Type   | Required | Accept Values |\n    | ---------- | ------ | -------- | ------------- |\n    | startTime  | number | &check;  |               |\n    | endTime    | number | &check;  |               |\n    | word       | string | &check;  |               |\n    | confidence | number | &check;  |               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل نوشتار به گفتار (Farsava.Models.TTSRequestModel)\n\n      <div dir='ltr'>\n\n    | Field          | Type                                  | Required | Accept Values |\n    | -------------- | ------------------------------------- | -------- | ------------- |\n    | synthesisInput | Farsava.Models.TTSSynthesisInputModel | &check;  |               |\n    | voiceConfig    | Farsava.Models.TTSVoiceConfigModel    | &check;  |               |\n    | audioConfig    | Farsava.Models.TTSAudioConfigModel    | &check;  |               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل نوشتار به گفتار (Farsava.Models.TTSSynthesisInputModel)\n\n      <div dir='ltr'>\n\n    | Field | Type   | Required | Accept Values |\n    | ----- | ------ | -------- | ------------- |\n    | text  | string | &check;  |               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل نوشتار به گفتار (Farsava.Models.TTSVoiceConfigModel)\n\n      <div dir='ltr'>\n\n    | Field        | Type   | Required | Accept Values                            |\n    | ------------ | ------ | -------- | ---------------------------------------- |\n    | languageCode | string | &check;  | `\"fa\"`                                   |\n    | voiceId      | string | &check;  | `\"b6e9c993-729e-4e0f-955b-f229cf1f77ee\"` |\n    | name         | string | &check;  | `\"default\"`                              |\n    | gender       | string | &check;  | `\"female\"`                               |\n\n      </div>\n\n-   مدل ارسال درخواست به سامانه تبدیل نوشتار به گفتار (Farsava.Models.TTSAudioConfigModel)\n\n      <div dir='ltr'>\n\n    | Field           | Type   | Required | Accept Values                      |\n    | --------------- | ------ | -------- | ---------------------------------- |\n    | audioEncoding   | string | &check;  | `\"LINEAR16\", \"MP3\", \"OGG\", \"FLAC\"` |\n    | speakingRate    | number | &check;  | in range `(0.5,2.0)`, step `0.1`   |\n    | pitch           | number | &check;  | in range `(-5, 5)`, step `1.0`     |\n    | volumeGainDb    | number | &check;  | in range `(-20, 20)`, step `1.0`   |\n    | sampleRateHertz | number | &check;  | `8000, 16000, 22050, 24000`        |\n    | bitRate         | number | &check;  | `32, 64, 128, 198, 256, 320`       |\n\n      </div>\n\n</div>\n","readmeFilename":"README.md"}