Библиотека для создания бота, который может брать интервью у людей по телефону

Я хочу создать бота/программное обеспечение, которое может звонить людям по телефону, задавать заранее заданные вопросы и сохранять ответы. Например, чтобы его можно было использовать для опроса общественного мнения.

Я хочу, чтобы он был гибким, чтобы я мог со временем менять вопросы, развивать бота, чтобы он становился более сложным, изменять/оптимизировать синтезатор речи.

Обратите внимание, что я должен использовать его для датского языка, на котором не так много носителей. Так что, похоже, я не могу использовать устоявшиеся решения, такие как Amazon Lex и т. Д.

Может ли кто-нибудь сказать мне, какие программы/фреймворки я могу использовать для этого? Я бы предпочел писать на Python.

Ответы (1)

Насколько я могу судить, здесь вы видите пять основных компонентов:

  • Номеронабиратель, отвечающий за размещение начального вызова и обработку других аспектов, связанных с телефоном.
  • Основное программное обеспечение для проведения опросов, отвечающее за выбор вопросов и получение ответов.
  • Синтезатор речи, отвечающий за вывод на удаленного пользователя.
  • Распознаватель речи, отвечающий за ввод от удаленного пользователя.
  • Серверная часть хранилища данных, отвечающая за хранение ответов и, возможно, самих вопросов.

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

Из этих пяти компонентов распознавание речи, вероятно, является самым сложным, поэтому я бы предложил начать с него. Для этого есть пара достойных фреймворков FOSS, но я работал только с CMU Sphinx.(точнее, подпроект PocketSphinx). Учитывая, что я имел дело только с одним, я не лучший человек, чтобы давать советы по этому компоненту. Тем не менее, я могу дать несколько общих советов. Датский, по крайней мере, частично взаимно понятен со шведским и норвежским. Хотя это не будет готовым решением, если вы сможете найти инструмент FOSS для любого из этих языков, вероятно, не потребуется много усилий, чтобы адаптировать его для работы с датским языком. Норвежский, вероятно, будет так же трудно найти поддержку, как и датский (у него примерно такое же количество носителей), но шведский может быть значительно проще, так как его носителей примерно в два раза больше, чем датский или норвежский. Если это все еще не помогает, начните поиск с программного обеспечения для других похожих языков (к сожалению, все остальные северогерманские языки имеют еще меньше носителей, чем три вышеупомянутых). Немецкий язык может быть не лучшей отправной точкой, но он значительно ближе, чем английский (который на самом деле является паршивой овцой среди германских языков), и его не должно быть слишком сложно найти.

Синтезатор речи, вероятно, не составит труда, кроме как найти голосовые файлы для датского языка. Существует около дюжины различных вариантов FOSS на выбор. Лично я являюсь поклонником espeak , но он, вероятно, не совсем соответствует тому, что вам нужно (начнем с того, что для него нет датской озвучки, насколько мне известно).

Номеронабиратель настолько прост, что вы, вероятно, можете написать его самостоятельно. Просто выберите платформу, с которой вы будете взаимодействовать для реальных звонков, и вперед. Даже если вам в конечном итоге придется генерировать гудки самостоятельно, это несложно (я видел генераторы DTMF всего за 500 строк кода). Если вы запускаете свой собственный, я бы предложил изучить возможности DSP, предоставляемые NumPy и SciPy.

Для хранения данных какая-то база данных практически обязательна. Вы можете легко найти всевозможные советы о том, как выбрать конкретную реализацию БД с помощью быстрого поиска в Интернете. Pandas стоит рассмотреть как вариант промежуточного программного обеспечения для взаимодействия с базой данных.

Основное программное обеспечение для проведения опросов, вероятно, должно быть настраиваемым компонентом просто потому, что вероятность найти что-то, что объединяет все четыре других компонента, как вам нужно, довольно низка.