Найти тему

Делаем Soft Phone на C#

Оглавление

С чего все начиналось

В один прекрасный момент появилась достаточно нетривиальная на то время задачка — необходимо было обзванивать огромное количество людей и пытаться донести до них какую-то информацию. Первично с юмором решили, а почему бы не звонить вручную? От этого моментально отказались, примерно подсчитав сколько звонков ежедневно нужно совершать (по минимуму — 250-400 звонков, а это далеко не предел). В итоге было принято решение разрабатывать свою систему оповещения.

Долгий. Мучительный сбор данных

Те, кто не поверят в дальнейший рассказ, могут попробовать кинуть любому поисковику запрос: «Система оповещения», — или «Автоматический обзвон клиентов». Даже указав конкретный язык программирования, пришлось перелопатить немало ресурсов, в том числе и англоязычных (еще одна причина учить языки в школе). Первое, что нам предлагается — обилие уже реализованных решений, которые стоят не так уж и много, однако многое сделать банально не позволяют. Для примера. Почти сразу мы нашли софтину (название опущу, дабы не оскорблять создателя), которая на первый взгляд была ну идеальна для наших целей. Однако после выяснилось, что ни толковой статистики, ни задания шаблона обзвона от программы не добьешься. Что ж, поиск продолжился. В конце-концов было найдено два варианта развития событий:

  • разработка приложения на базе GSM модема;
  • разработка системы оповещения на базе SIP-сервера.

В итоге, были реализованы оба варианта.

Первые подводные камни

Выбрав аппаратное обеспечение для будущего проекта мы столкнулись с новым вопросом. «Хорошо, звонить мы научимся, а говорить то кто будет?» Казалось бы, в чем проблема, сделать пару сотен аудио-файлов и собирать их в разном порядке, делая полноценное сообщение. От этой идеи сразу же отказались хотя бы потому, что для создания более-менее приличной базы звуков нужно если не оборудование, то время. А проект хотелось сделать быстрее. Пришлось искать голосовой движок, который мог бы стыковаться с средой разработки и давать более-менее внятный звук. Искали снова долго, натыкались на кучу платных вариантов, пока не нашелся один опенсорсный voice engine, который устроил всех по звучанию. И уже только после этого началась разработка самой системы оповещения.

Голосовой движок

RHVoice (по этому названию мы можем найти и скачать этот движок) дает в наше полное распоряжение аж четыре варианта голоса. На тембр и интонацию можно подобрать под себя, что чертовски приятно. И пускай этот движок во многом уступает по качеству звука и грамотности выговора своим платным товарищам (типа движка от acapela group), после некоторых манипуляций с звуком на выходе мы можем получить вполне внятное аудио-сообщение, которое донесет до человека все, что мы хотели сказать.

Первое, что нам необходимо сделать, скачать и установить голосовой движок. Введя название в любом поисковике, мы сможем скачать эту чудо-машину. Процесс установки не занимает много времени, через пару кликов на кнопку «Next» и несколько минут, после чего наш компьютер научится говорить.

Для разработки нам понадобится Visual Studio. Для демонстрации работы нам будет достаточно консольного приложения. Создаем новый проект. Первое, что нам нужно сделать, это добавить ссылку на System.Speech. Указываем using System.Speech.Synthesis. Большего нам не понадобится.

Детали реализации программного кода на языке C# описаны в статье https://shwanoff.ru/soft-phone-speech-engine/