Biblioteca para construir un bot que pueda entrevistar a personas por teléfono

Quiero construir un bot/software que pueda llamar a las personas por teléfono y hacer preguntas predefinidas a las personas y almacenar las respuestas. Por ejemplo, tal que podría ser utilizado para encuestas de opinión.

Quiero que sea flexible de modo que pueda cambiar las preguntas con el tiempo, desarrollar el bot para que sea más sofisticado, cambiar/optimizar el sintetizador de voz.

Tenga en cuenta que tengo que usarlo para el idioma danés, que no tiene muchos hablantes. Entonces parece que no puedo usar soluciones establecidas como Amazon Lex, etc.

¿Alguien puede decirme qué programas/marcos que puedo usar para esto? Preferiría escribir en Python.

Respuestas (1)

Por lo que puedo decir, estás viendo cinco componentes principales aquí:

  • El marcador, responsable de realizar la llamada inicial y manejar los demás aspectos relacionados con el teléfono.
  • El software principal de encuestas, responsable de elegir preguntas y recibir respuestas.
  • El sintetizador de voz, responsable de la salida al usuario remoto.
  • El reconocedor de voz, responsable de la entrada del usuario remoto.
  • El backend de almacenamiento de datos, responsable de almacenar las respuestas y posiblemente las preguntas mismas.

En una situación ideal, todos estos deberían estar tan aislados entre sí como sea razonablemente posible para que pueda intercambiar cualquiera de los componentes que no sean el núcleo sin necesidad de un trabajo significativo para hacerlo.

De estos cinco componentes, la parte de reconocimiento de voz es probablemente la más difícil, por lo que sugeriría comenzar con eso. Hay un par de frameworks FOSS decentes para esto, pero el único con el que he trabajado es CMU Sphinx .(más específicamente, el subproyecto PocketSphinx). Dado que solo he tratado con uno, no soy realmente la mejor persona para dar consejos sobre este componente. Dicho esto, puedo dar algunos consejos generales. El danés es, al menos parcialmente, mutuamente inteligible con el sueco y el noruego. Si bien no será una solución lista para usar, si puede encontrar una herramienta FOSS para cualquiera de estos idiomas, probablemente no le llevará mucho trabajo adaptarla para que funcione con el danés. Probablemente será tan difícil encontrar soporte para el noruego como para el danés (tiene aproximadamente la misma cantidad de hablantes), pero el sueco puede ser significativamente más fácil, ya que tiene aproximadamente el doble de hablantes nativos que el danés o el noruego. Si eso sigue fallando, comience su búsqueda con software para otros lenguajes similares (lamentablemente, todos los demás idiomas germánicos del norte tienen incluso menos hablantes nativos que los tres anteriores). Puede que el alemán no sea el mejor punto de partida, pero está significativamente más cerca que el inglés (que en realidad es la oveja negra de las lenguas germánicas) y no debería ser demasiado difícil de encontrar.

El sintetizador de voz probablemente no va a ser difícil más que encontrar archivos de voz para danés. Hay alrededor de una docena de opciones diferentes de FOSS para elegir. Personalmente, soy un fanático del espeak , pero probablemente no se ajuste exactamente a lo que necesitas (para empezar, no hay una voz danesa que yo sepa).

El marcador es lo suficientemente fácil como para que probablemente puedas escribirlo tú mismo. Simplemente elija una plataforma para interactuar con las llamadas reales y continúe desde allí. Incluso si termina teniendo que generar los tonos de marcación usted mismo, no es difícil (he visto generadores DTMF en tan solo 500 líneas de código). Si lo hace por su cuenta, le sugiero que busque en las instalaciones de DSP proporcionadas por NumPy y SciPy.

Para el almacenamiento de datos, algún tipo de base de datos es bastante obligatorio. Puede encontrar fácilmente todo tipo de consejos sobre cómo elegir una implementación de base de datos en particular con una búsqueda rápida en línea. Puede valer la pena considerar Pandas como una opción para que el middleware interactúe con la base de datos.

Es probable que el software principal de la encuesta tenga que ser un componente personalizado, simplemente porque la probabilidad de encontrar algo que integre los otros cuatro componentes como usted necesita es bastante baja.