{"id":27215983,"url":"https://github.com/antirek/voicer","last_synced_at":"2025-10-19T14:32:58.633Z","repository":{"id":25256059,"uuid":"28681166","full_name":"antirek/voicer","owner":"antirek","description":"AGI-server voice recognizer for #Asterisk","archived":false,"fork":false,"pushed_at":"2023-01-01T04:17:08.000Z","size":480,"stargazers_count":98,"open_issues_count":21,"forks_count":35,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-29T20:02:05.885Z","etag":null,"topics":["agi","asr","asterisk","dialplan","google","javascript","recognition","voice","voice-assistant","voice-commands","voice-control","voice-recognition","yandex"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antirek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-01T05:40:28.000Z","updated_at":"2025-02-15T07:21:21.000Z","dependencies_parsed_at":"2023-01-14T02:24:50.027Z","dependency_job_id":null,"html_url":"https://github.com/antirek/voicer","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirek%2Fvoicer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirek%2Fvoicer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirek%2Fvoicer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirek%2Fvoicer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antirek","download_url":"https://codeload.github.com/antirek/voicer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054230,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agi","asr","asterisk","dialplan","google","javascript","recognition","voice","voice-assistant","voice-commands","voice-control","voice-recognition","yandex"],"created_at":"2025-04-10T04:46:27.807Z","updated_at":"2025-10-19T14:32:58.530Z","avatar_url":"https://github.com/antirek.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"voicer\n======\n\nAGI voice recognizer for Asterisk [use Yandex, Google or Wit.ai ASR online services]\n\nCall to special extension, say \"Vasya\" and Asterisk connect you with Vasya! Excellent!\n\n[![Build Status](https://travis-ci.org/antirek/voicer.svg?branch=master)](https://travis-ci.org/antirek/voicer)\n\n\n\nWorkflow\n========\n\nVoicer work as AGI-server. Voicer accept request from asterisk via AGI app.\nIt run handler for each request. Handler command asterisk record file.\n\nAfter this send file to recognition service, receive text, search by text in \nsource of data for finding concordance, if source have this text it return \nchannel for call, voicer set dialplan vars RECOGNITION_RESULT as SUCCESS and \nRECOGNITION_TARGET for finded result. \n\nAfter this voicer return control to dialplan. Build rules of dialplan using \nRECOGNITION_RESULT and RECOGNITION_TARGET.\n\n\nUse \n===\n\n\n## Install ##\n\n\u003e $ npm install voicer -g\n\n## Run\n\n\u003e voicer -p 3000 -t google -k \u003cdeveloper_key\u003e -d /etc/voicer/peernames.json -r /var/records\n\nrun with --help for instructions\n\n\u003e voicer --help\n\n\nConfiguration\n=============\n\n## Config.js ##\n\n\n``````\n{\n    agi: {\n        port: 3000\n    },\n    processing: {\n        totalAttempts: 2,\n        playGreeting: true,\n        playBeepBeforeRecording: false   //use system beep\n    },\n    asterisk: {\n        sounds: {\n            onErrorBeforeFinish: 'invalid',\n            onErrorBeforeRepeat: 'invalid',\n            greeting: 'beep'\n        },\n        recognitionDialplanVars: {\n            status: 'RECOGNITION_RESULT',\n            target: 'RECOGNITION_TARGET'\n        }\n    },\n    record: {\n        directory: '/tmp',\n        type: 'wav',\n        duration: 2,\n    },\n    recognize: {\n        directory: '/tmp',\n        type: 'witai',    // ['yandex', 'google', 'witai']\n        options: {\n            developer_key: '6SQV3DEGQWIXW3R2EDFUMPQCVGOEIBCR'\n        }\n    },\n    lookup: {\n        type: 'file',\n        options: {\n            dataFile: 'data/peernames.json'\n        }\n    }\n};\n\n``````\n\n## Asterisk ##\n\nWrite dialplan for call to AGI-server voicer like\n\n`````\n[default]\nexten=1000,1,AGI(agi://localhost:3000)\nexten=1000,n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?:default,1000,4)\nexten=1000,n,Dial(${RECOGNITION_TARGET})\n\n`````\n\n## Format peernames ##\n\n`````\n[\n    ....\n    {\n        \"name\": \"Vasya\",\n        \"target\": \"SIP/Sf567890\",\n        \"variants\": [\"vasya\", \"vasya petrov\"]\n    },\n    ....\n]\n\n`````\n\n[Online peernames.json constructor](https://antirek.github.io/voicer-web/)\n\n\n## Errors?! ##\n\nBugs?! Oh, contact with me. I want to eat them.\n\n\n## Links ##\n\nYandex API key: https://developer.tech.yandex.ru/\n\nGoogle API key: https://console.developers.google.com/\n\nWit.ai API key: http://wit.ai\n\n\n[Voice speed dial on Asterisk](http://habrahabr.ru/post/248263/)\n\n[New manual](https://habr.com/ru/post/436016/)\n\n[Use with FreePBX](https://voxlink.ru/kb/asterisk-configuration/golosovoj-nabor-v-asterisk/)\n\n\nDevelopment\n===========\n\n\n## Test ##\n\n\u003e npm test","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantirek%2Fvoicer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantirek%2Fvoicer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantirek%2Fvoicer/lists"}