Встраиваем переводчик в Астериск
9 августа 2019, 10:13
|  | Два собеседника в разных странах, русскоязычный и англоязычный, могут воспользоваться облачными сервисами распознавания голоса, перевода, синтезатора речи Text-to-speech, чтобы  общаться по телефону через Оксану, робота переводчика. При наборе номера удалённого абонента через сервисный код *21*+442037692097 голосовой поток от русскоязычного абонента Алёны отправляется через chan_LEG на распознавание, превращается в текст, который, в свою очередь, отправляется в on-line сервис https://translate.yandex.ru, откуда поступает в модуль синтезатора речи - Text-to-speech, и воспроизводится англоязычному абоненту Бобу. Встречный голосовой поток от Боба обрабатывается по такой же схеме, но через Google voice recognition + Google translate + Google speech engine, такоим образом доходит до Алёны уже по-русски. Система работает в многопоточном режиме, т.е. нет необходимости ожидать завершения распознавания/перевода предыдущего фрагмента, чтобы наговаривать следующий. Схема полностью модульна, позволяет гибко переключать все элементы, заменяя, например, всю цепочку только сервисами Google для обоих направлений, или, например, обрабатывая текстовый перевод в обоих направлениях облачным сервисом перевода Яндекс https://translate.yandex.ru. Система начинает распознавание не дожидаясь окончания фрагмента и сама определяет его начало и конец по паузе в конце предложения. Отметим также простоту интеграции и скорость перевода близкую к реальному разговору. | 
К слову сказать, Google recognition заявляет об огромном списке языков для распознавания:
| Language | languageCode | Language (English name) | 
|---|---|---|
| Afrikaans (Suid-Afrika) | af-ZA | Afrikaans (South Africa) | 
| አማርኛ (ኢትዮጵያ) | am-ET | Amharic (Ethiopia) | 
| Հայ (Հայաստան) | hy-AM | Armenian (Armenia) | 
| Azərbaycan (Azərbaycan) | az-AZ | Azerbaijani (Azerbaijan) | 
| Bahasa Indonesia (Indonesia) | id-ID | Indonesian (Indonesia) | 
| Bahasa Melayu (Malaysia) | ms-MY | Malay (Malaysia) | 
| বাংলা (বাংলাদেশ) | bn-BD | Bengali (Bangladesh) | 
| বাংলা (ভারত) | bn-IN | Bengali (India) | 
| Català (Espanya) | ca-ES | Catalan (Spain) | 
| Čeština (Česká republika) | cs-CZ | Czech (Czech Republic) | 
| Dansk (Danmark) | da-DK | Danish (Denmark) | 
| Deutsch (Deutschland) | de-DE | German (Germany) | 
| English (Australia) | en-AU | English (Australia) | 
| English (Canada) | en-CA | English (Canada) | 
| English (Ghana) | en-GH | English (Ghana) | 
| English (Great Britain) | en-GB | English (United Kingdom) | 
| English (India) | en-IN | English (India) | 
| English (Ireland) | en-IE | English (Ireland) | 
| English (Kenya) | en-KE | English (Kenya) | 
| English (New Zealand) | en-NZ | English (New Zealand) | 
| English (Nigeria) | en-NG | English (Nigeria) | 
| English (Philippines) | en-PH | English (Philippines) | 
| English (Singapore) | en-SG | English (Singapore) | 
| English (South Africa) | en-ZA | English (South Africa) | 
| English (Tanzania) | en-TZ | English (Tanzania) | 
| English (United States) | en-US | English (United States) | 
| Español (Argentina) | es-AR | Spanish (Argentina) | 
| Español (Bolivia) | es-BO | Spanish (Bolivia) | 
| Español (Chile) | es-CL | Spanish (Chile) | 
| Español (Colombia) | es-CO | Spanish (Colombia) | 
| Español (Costa Rica) | es-CR | Spanish (Costa Rica) | 
| Español (Ecuador) | es-EC | Spanish (Ecuador) | 
| Español (El Salvador) | es-SV | Spanish (El Salvador) | 
| Español (España) | es-ES | Spanish (Spain) | 
| Español (Estados Unidos) | es-US | Spanish (United States) | 
| Español (Guatemala) | es-GT | Spanish (Guatemala) | 
| Español (Honduras) | es-HN | Spanish (Honduras) | 
| Español (México) | es-MX | Spanish (Mexico) | 
| Español (Nicaragua) | es-NI | Spanish (Nicaragua) | 
| Español (Panamá) | es-PA | Spanish (Panama) | 
| Español (Paraguay) | es-PY | Spanish (Paraguay) | 
| Español (Perú) | es-PE | Spanish (Peru) | 
| Español (Puerto Rico) | es-PR | Spanish (Puerto Rico) | 
| Español (República Dominicana) | es-DO | Spanish (Dominican Republic) | 
| Español (Uruguay) | es-UY | Spanish (Uruguay) | 
| Español (Venezuela) | es-VE | Spanish (Venezuela) | 
| Euskara (Espainia) | eu-ES | Basque (Spain) | 
| Filipino (Pilipinas) | fil-PH | Filipino (Philippines) | 
| Français (Canada) | fr-CA | French (Canada) | 
| Français (France) | fr-FR | French (France) | 
| Galego (España) | gl-ES | Galician (Spain) | 
| ქართული (საქართველო) | ka-GE | Georgian (Georgia) | 
| ગુજરાતી (ભારત) | gu-IN | Gujarati (India) | 
| Hrvatski (Hrvatska) | hr-HR | Croatian (Croatia) | 
| IsiZulu (Ningizimu Afrika) | zu-ZA | Zulu (South Africa) | 
| Íslenska (Ísland) | is-IS | Icelandic (Iceland) | 
| Italiano (Italia) | it-IT | Italian (Italy) | 
| Jawa (Indonesia) | jv-ID | Javanese (Indonesia) | 
| ಕನ್ನಡ (ಭಾರತ) | kn-IN | Kannada (India) | 
| ភាសាខ្មែរ (កម្ពុជា) | km-KH | Khmer (Cambodia) | 
| ລາວ (ລາວ) | lo-LA | Lao (Laos) | 
| Latviešu (latviešu) | lv-LV | Latvian (Latvia) | 
| Lietuvių (Lietuva) | lt-LT | Lithuanian (Lithuania) | 
| Magyar (Magyarország) | hu-HU | Hungarian (Hungary) | 
| മലയാളം (ഇന്ത്യ) | ml-IN | Malayalam (India) | 
| मराठी (भारत) | mr-IN | Marathi (India) | 
| Nederlands (Nederland) | nl-NL | Dutch (Netherlands) | 
| नेपाली (नेपाल) | ne-NP | Nepali (Nepal) | 
| Norsk bokmål (Norge) | nb-NO | Norwegian Bokmål (Norway) | 
| Polski (Polska) | pl-PL | Polish (Poland) | 
| Português (Brasil) | pt-BR | Portuguese (Brazil) | 
| Português (Portugal) | pt-PT | Portuguese (Portugal) | 
| Română (România) | ro-RO | Romanian (Romania) | 
| සිංහල (ශ්රී ලංකාව) | si-LK | Sinhala (Sri Lanka) | 
| Slovenčina (Slovensko) | sk-SK | Slovak (Slovakia) | 
| Slovenščina (Slovenija) | sl-SI | Slovenian (Slovenia) | 
| Urang (Indonesia) | su-ID | Sundanese (Indonesia) | 
| Swahili (Tanzania) | sw-TZ | Swahili (Tanzania) | 
| Swahili (Kenya) | sw-KE | Swahili (Kenya) | 
| Suomi (Suomi) | fi-FI | Finnish (Finland) | 
| Svenska (Sverige) | sv-SE | Swedish (Sweden) | 
| தமிழ் (இந்தியா) | ta-IN | Tamil (India) | 
| தமிழ் (சிங்கப்பூர்) | ta-SG | Tamil (Singapore) | 
| தமிழ் (இலங்கை) | ta-LK | Tamil (Sri Lanka) | 
| தமிழ் (மலேசியா) | ta-MY | Tamil (Malaysia) | 
| తెలుగు (భారతదేశం) | te-IN | Telugu (India) | 
| Tiếng Việt (Việt Nam) | vi-VN | Vietnamese (Vietnam) | 
| Türkçe (Türkiye) | tr-TR | Turkish (Turkey) | 
| اردو (پاکستان) | ur-PK | Urdu (Pakistan) | 
| اردو (بھارت) | ur-IN | Urdu (India) | 
| Ελληνικά (Ελλάδα) | el-GR | Greek (Greece) | 
| Български (България) | bg-BG | Bulgarian (Bulgaria) | 
| Русский (Россия) | ru-RU | Russian (Russia) | 
| Српски (Србија) | sr-RS | Serbian (Serbia) | 
| Українська (Україна) | uk-UA | Ukrainian (Ukraine) | 
| עברית (ישראל) | he-IL | Hebrew (Israel) | 
| العربية (إسرائيل) | ar-IL | Arabic (Israel) | 
| العربية (الأردن) | ar-JO | Arabic (Jordan) | 
| العربية (الإمارات) | ar-AE | Arabic (United Arab Emirates) | 
| العربية (البحرين) | ar-BH | Arabic (Bahrain) | 
| العربية (الجزائر) | ar-DZ | Arabic (Algeria) | 
| العربية (السعودية) | ar-SA | Arabic (Saudi Arabia) | 
| العربية (العراق) | ar-IQ | Arabic (Iraq) | 
| العربية (الكويت) | ar-KW | Arabic (Kuwait) | 
| العربية (المغرب) | ar-MA | Arabic (Morocco) | 
| العربية (تونس) | ar-TN | Arabic (Tunisia) | 
| العربية (عُمان) | ar-OM | Arabic (Oman) | 
| العربية (فلسطين) | ar-PS | Arabic (State of Palestine) | 
| العربية (قطر) | ar-QA | Arabic (Qatar) | 
| العربية (لبنان) | ar-LB | Arabic (Lebanon) | 
| العربية (مصر) | ar-EG | Arabic (Egypt) | 
| فارسی (ایران) | fa-IR | Persian (Iran) | 
| हिन्दी (भारत) | hi-IN | Hindi (India) | 
| ไทย (ประเทศไทย) | th-TH | Thai (Thailand) | 
| 한국어 (대한민국) | ko-KR | Korean (South Korea) | 
| 國語 (台灣) | zh-TW | Chinese, Mandarin (Traditional, Taiwan) | 
| 廣東話 (香港) | yue-Hant-HK | Chinese, Cantonese (Traditional, Hong Kong) | 
| 日本語(日本) | ja-JP | Japanese (Japan) | 
| 普通話 (香港) | zh-HK | Chinese, Mandarin (Simplified, Hong Kong) | 
| 普通话 (中国大陆) | zh | Chinese, Mandarin (Simplified, China) | 
