Poseer la habilidad de Alexa después de unos minutos con el problema

Como hackers, nos gusta pensar en nosotros mismos como un conjunto lógico. Pero la verdad es que estamos tan sujetos a las modas como el público en general. Hubo un momento en que los proyectos geniales intercambiaban LED verdes por azules o agregaban conectividad WiFi donde nadie más la tenía. Ahora es popular conectar su proyecto a un asistente personal. El problema es que esto necesita un programa. Software que reside en una red de acceso público en algún lugar, y ¿quién quiere manejar eso cuando solo estás jugando con las habilidades normales de Alexa por primera vez?

Si tiene una computadora frente a Internet, está bien. De lo contrario, puede pedir prestado uno a Amazon, pero luego debe comprender su infraestructura, que es una tarea en sí misma. Sin embargo, hay una forma muy sencilla de iniciar la habilidad de Alexa. Comencé casi en poco tiempo usando un sitio web llamado Glitch. Glitch es un poco de todo. Es un servicio de alojamiento web, programa IDE para Node.js, repositorio de código y algunas otras cosas. El sitio web es de la empresa que nos trajo Trello y ayudó a iniciar Stack Overflow.

Glitch no se trata de la destreza de Alexa. Se trata de crear fácilmente programas y servicios en línea. Sin embargo, ese es el 90% del trabajo involucrado en la creación de la habilidad de Alexa. Necesitará una cuenta Glitch y una cuenta de desarrollador de Amazon. Ambos son gratuitos, al menos para lo que queremos lograr. Glitch también tiene algunas plantillas para Google Home. Tengo ambos, pero decidí centrarme en Alexa, sin ninguna razón en particular.

Es cierto que mi habilidad ejemplar no realiza una tarea particularmente difícil, pero es un buen comienzo y si desea desarrollar la suya propia, le dará una ventaja inicial. Aunque utilicé una herramienta separada, no hay ninguna razón por la que no pueda cambiar de esa herramienta a su propia infraestructura más adelante si es necesario. Una cosa buena de Glitch es que puedes compartir código en vivo y la gente puede mezclarlo. Piense en una bifurcación de GitHub, pero donde puede intentar lanzar mi copia y su copia también se publicará. Resulta que para las listas de Alexa, tenerlo en vivo no es tan útil como te gustaría, porque aún tienes que contárselo a Amazon. Pero sí significa que hay habilidades ejemplares de Alexa (incluida la mía) que puedes tomar prestadas para comenzar la tuya, al igual que yo tomé prestada una para comenzar la mía.

¿Lo necesitas?

La primera pregunta que puede hacerse es si necesita la habilidad de Alexa. Recientemente conseguí que Alexa controlara mis impresoras 3D a través de IFTTT sin absolutamente ninguna necesidad de programación. Sin embargo, si realmente quiere afirmar que está trabajando con un asistente virtual, tendrá que escribir algún código en alguna parte.

Por supuesto, existe la pregunta filosófica más importante: ¿necesitas hacer algo de esto? Admito que me resulta útil tener mis impresoras 3D con control por voz, ya que podría hacer ajustes con ambas manos y no tengo que buscar a tientas los botones para que la máquina funcione, por ejemplo. Estoy menos convencido de que necesito un asistente virtual para lanzar mi dron. Una vez más, tal vez eso sea lo que quieras hacer y eso depende de ti.

Empezando

Si aún no tiene una, puede continuar y registrarse para obtener una cuenta de desarrollador de Amazon. Luego ve a Glitch y regístrate allí también. Hay al menos dos plantillas para crear la habilidad de Alexa. Está descalzo y más comprometido, lo que recupera las previsiones meteorológicas. Si miras la página, puede que no tenga mucho sentido. Recuerde que el servidor web está diseñado para hablar con Alexa, no con personas. En la esquina superior derecha hay un icono con un par de peces. Si hace clic allí, puede ver la fuente o puede mezclarla.

Decidí mezclar el servicio de pronóstico del tiempo porque pensé que era un mejor ejemplo. Luego corté todo el código relacionado con el clima (excepto algunos documentos) y escribí una función simple de JavaScript:

function get_fact() {
  var factArray = [
  'Hackers read la-tecnologia.com every day',
  'You know you are 3D printing too much when you tell someone you are extruding mustard on your hot dog',
  'The best microcontroller is the one already programmed to do what you want',
  'We can all agree. All software has bugs. All software can be made simpler. Therefore, all programs can be reduced to one line of code that does not work.',
  'I hate talking to flying robots. They just drone on.',
  'If you call your morning cup of coffee installing Java, you need a hobby',
  'I have heard that in C functions should not call each other because they usually have arguments',
  'I refused to learn C plus plus. I saw see-out being shifted left hello world times and gave up',
  'If cavemen had thought of binary we could all count to 1023 on our fingers',
  'If you can't hack it, you don't own it.'
  ];
  var randomNumber = Math.floor(Math.random()*factArray.length);
  return factArray[randomNumber];
}

Lo único que debe hacer es vincular el código al marco del servicio web.

Rápido

Glitch configura automáticamente una biblioteca Express en este proyecto. Básicamente es un servidor web simple. Después de crear el objeto principal del programa, puede establecer rutas para ejecutar su código cuando alguien llama a un servicio web en particular. También incluye un objeto que representa un servicio de Alexa. No tuve que escribir el código para configurar esto, pero aquí está:

app = express(),
// Setup the alexa app and attach it to express before anything else.
alexaApp = new alexa.app("");

// POST calls to / in express will be handled by the app.request() function
alexaApp.express({
  expressApp: app,
  checkCert: true,
// sets up a GET route when set to true. This is handy for testing in
// development, but not recommended for production.
  debug: true
});

Hay dos métodos que quería ofrecer. Uno para cuando alguien abre mi habilidad (por cierto, lo llamé un hecho pirateado, da algunos datos graciosos sobre piratería y cosas relacionadas). El otro método funcionará cuando alguien diga: "Alexa, dile a Hacker Fact que me dé un dato". O algo así.

Este último se conoce un poco como intención. Las intenciones pueden tener expresiones (como "dame un hecho") y pueden tener grietas. No utilicé ninguna grieta (excepto el ejemplo del clima). Usando rendijas, puede dar una parte del comando de la persona como argumento. Por ejemplo, podría hacerlo para que usted pudiera decir, "Alexa, dígale a Hacker Fact que me dé un dato sobre Arduinos". Entonces podría crear la intención para que la siguiente palabra después de que escuche "acerca de" sea una grieta y analizarla en mi código.

Probablemente no lo necesite, pero si tiene curiosidad por saber más sobre Express, mire este video.

Los dos métodos

Estos son los dos métodos:

alexaApp.launch(function(request, response) {
 console.log({"App launched");
 response.say('Hi from your friends at La-Tecnologia. Ask me for a fact to learn something interesting or possibly funny.');
});


alexaApp.intent("HackerFact", {
 "slots": { },
 "utterances": [
 "Tell me a hacker fact",
 "Give me a hacker fact",
 "tell me a fact",
 "give me a fact",
 "go",
 "fact"
 ]
 },
 function(request, response) {
 console.log("In Fact intent");
 response.say(get_fact());
 }
) <span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0"; ></span>;

Tenga en cuenta que la intención "HackerFact" tiene un conjunto de declaraciones enviadas a Amazon. Puede encontrar todo el código de HackerFact en línea. No lo olvides, puedes ver la fuente o el remix con el ícono de dos peces en la parte superior derecha de la página.

Todo el código está en el archivo index.js. Hay algunos otros archivos, pero para esta tarea, probablemente no hará ningún cambio en ellos más que tal vez cambiar algún texto en el archivo del paquete o la documentación.

En Amazon

Curiosamente, la siguiente parte probablemente sea más difícil. Desde la primera página del sitio web para desarrolladores de Amazon, querrá seleccionar las capacidades de Alexa y luego presionar el botón "Agregar nuevo". Muchas de las entradas que verá se relacionan con habilidades más complejas. Tampoco publicaré mi habilidad, pero seguirá apareciendo en mi cuenta. Si crea algunos documentos, puede enviar su capacidad para probar con usuarios seleccionados o incluso publicarlo directamente.

A continuación, se muestra un resumen de los campos que debe completar en la pestaña Información de la lista:

  • Tipo de lista = Modelo interactivo personalizado
  • Nombre = el nombre para mostrar que desee
  • Nombre de llamada = Esto es lo que la gente le pedirá a Alexa que use (por ejemplo, "Alexa, dígale a Hacker Fact ..." significaría que mi nombre de llamada era Hacker Fact)
  • Por cierto, tuve la desgracia de cambiar el nombre de la llamada después de configurarla, así que piénsalo bien.

    La siguiente página (Modelo interactivo) parece complicada, pero no, gracias a las bibliotecas proporcionadas por Glitch. Abra su proyecto Glitch. Si está mirando la fuente, haga clic en "mostrar" en la parte superior de la pantalla. El proyecto predeterminado hace que el rechazo de datos aparezca en la página principal (que generalmente nadie ve), que incluye la información que necesita para esta página.

    El cuadro Esquema intencional necesita todo después de "Esquema:" y antes de "Declaraciones:" de su página principal. Eso incluye los paréntesis. Mi esquema intencional se ve así:

{
 "intents": [
 {
 "intent": "HackerFact"
 },
 {
 "intent": "AMAZON.CancelIntent"
 },
 {
 "intent": "AMAZON.StopIntent"
 }
 ]
}

El resto de la página tiene algunas líneas después de "Refranes:" y esas líneas necesitan el último cuadro. La casilla del medio puede permanecer vacía, para este ejemplo.

Más pasos para conectar Glitch con Amazon

En la pestaña Configuración, puede seleccionar HTTPS y luego ingresar la URL de Glitch. Para encontrar esa URL, abra el nombre del proyecto en la parte superior izquierda de la pantalla y lo verá junto con un botón de copia. El mío, por ejemplo, es https://hacker-fact.glitch.me. No se le permite vincular una cuenta y puede dejar todas las casillas opcionales solas.

En la siguiente pantalla, querrá seleccionar "Mi punto de desarrollo es un subdominio de un dominio que tiene una autoridad certificadora comodín" porque así es como funciona Glitch. Aquí tiene todo lo que necesita en esa página.

En este punto, su habilidad debería aparecer en cualquier Alexa asociada con su cuenta (incluidas las aplicaciones de Alexa como Reverb en su teléfono). También puede probarlo aquí en la consola para ver si funciona.

Suelten a los perros

Esto es suficiente para encender tu código con tu Alexa. No quiero liberar la habilidad para que la usen otros, pero esa es una opción si quieres continuar por tu cuenta. También puede usar Glitch para otras cosas, incluidas algunas Raspberry Pi y algunas otras plataformas de IoT. Si miras a tu alrededor, probablemente encuentres algo interesante.

Por supuesto, puede configurar su propio servidor para hacer todas las cosas que Glitch hace por usted, tal vez incluso en una Raspberry Pi. También puede permitir que Amazon aloje su código como una función de Lambda (este es un servicio web sin un servidor web fijo; vea el video a continuación). Si le gustan las habilidades de escritura, la documentación de Amazon no es mala, pero a veces vale la pena entrar y salir.

  • Ostraco dice:

    ¿Paga por usar la nube de Amazon?

    • cantidad púrpura dice:

      Solo si excede una cierta cantidad de tiempo de procesador o algo que sea lo suficientemente grande. Y si usa tanto, todavía monetizan su habilidad de todos modos, lo que debería permitirle desarrollar aún más.

  • CKnopp dice:

    Llega la red de torrents de Alexa ...

  • [email protected] dice:

    ¿Necesitamos a Alexa? ¿Por qué?

    Ha pasado un tiempo desde que intenté instalar y ejecutar cualquier programa de reconocimiento de voz. Creo que recuerdo haber hecho eso en la década de 1990. Por supuesto, en ese momento fue bastante difícil y realmente no logró la tarea de ser mucho más que una curiosidad. Sin embargo, es indudable que la situación ha mejorado. Entre las computadoras domésticas se están volviendo más poderosas y los desarrolladores han tenido 20 años para continuar con el desarrollo, ¿no existen buenos programas gratuitos de reconocimiento de voz de código abierto? Si no es así, ¿no hay operaciones baratas?

    Me siento un poco incómodo con la idea de instalar un micrófono que fluya hacia un tercero en mi casa. ¿Por qué alguien haría tales proyectos usando su propio ejemplo de algún software de reconocimiento de voz que se ejecuta en su propia raspberry pi o en una vieja computadora de escritorio en su propia casa? Con tantos fabricantes implementando proyectos de Alexa o Google Talk, ¡parece que esto ya debería ser un problema!

    Sé que podría empezar a buscar en Google "código abierto de reconocimiento de voz". Probablemente lo haga, pero realmente no tengo tiempo para instalar un montón de aplicaciones y probar su rendimiento. Supongo que la comunidad aquí ya sabe lo que falta para eso.

    • Al Williams dice:

      Hay algunos, pero la calidad es baja y la instalación a menudo duele. Lo más cercano es Mycroft, aunque también usa backend en la nube, pero creo que puedes alojar tus propios respaldos, simplemente no es el predeterminado y probablemente no esté bien soportado. También está Jasper. Quizás algunos otros.

      El problema es Google y Amazon e incluso Apple nos ha arruinado. CMSSphinx es probablemente el mejor reconocimiento de voz abierto y de ninguna manera se acerca a la precisión de velocidad que tenemos con la nube. servicios.

      Tengo que llevar una vida aburrida, pero creo que nadie quiere escuchar lo que pasa en mi casa. Los teléfonos eran notoriamente inseguros, pero lo olvidamos porque lo hicimos se pierde en el número de llamadas (normalmente). En la película Gorky Park, los personajes bloquearon lápices en el teléfono celular para romper el enlace a la oficina central antes de prohibir las conversaciones por temor a escuchas. Es más difícil hacer eso ahora.

      • Miguel dice:

        "Tengo que llevar una vida aburrida, pero no creo que nadie quiera escuchar lo que pasa en mi casa". Incorrecto, los anunciantes definitivamente QUIEREN escuchar lo que está sucediendo en su casa y no con malos propósitos, sino simplemente para que usted pueda ayudarles a hacer su trabajo más fácil. No tiene nada que ver con lo aburrida o emocionante que es su vida, ya que ambos extremos del espectro los ayudan a recopilar datos demográficos y comprender mejor los motivos y cómo venderse a sí mismo en una cosa o idea.

        El pensamiento realmente aterrador son las similitudes entre la publicidad y el control de la población, ambos toman los mismos datos de entrada y tienen los mismos objetivos. Quieren tanta información sobre usted y sus hábitos y luego quieren tomar esa información para darse cuenta de sus emociones y decisiones. Eso es exactamente lo que hace que estos asistentes domésticos sean tan aterradores y fue básicamente un punto importante de la trama en 1984 por Orwell.

      • Granjero dice:

        ¡Oh, hombre, Mikroft! Llévame de vuelta a los días de Lirc y GIRDER 🙂
        Mi primera conversación con el reconocimiento de voz terminó de una manera completamente diferente. Terminé de configurar el primero con un micrófono apuntando a la ventana que podía identificar (algunos) autos de los vecinos de mi departamento por el sonido de su motor. También podía identificar a las aves por sus píos, pero mi principal problema era filtrar el ruido de fondo y los eventos falsos. Probablemente me estremecería si le disparara y mirara mi antiguo "trabajo" jaja. Sin embargo, muy divertido entonces 🙂

        • Ostraco dice:

          Estoy seguro de que los VAD son divertidos.

          http://cdn.intechweb.org/pdfs/104.pdf

          • Granjero dice:

            En la página 7, las dificultades de SnR fueron definitivamente el problema de mi plataforma. Buen PDF, Ostracus. Como se puede imaginar con un micrófono para exteriores, la ganancia fue irrefutable por mí mismo debido al uso desatendido. Probé algunos trucos como ejecutarlo a través de una puerta externa que ayudó, pero el software no estaba realmente diseñado para mi uso. Fue realmente divertido 🙂 Pude controlar mi mouse tarareando una frecuencia de media a más alta y una amplitud como el eje Y, pero funcionó muy cerca del micrófono / computadora, por lo que fue un poco inútil (tanto LiRC como GiRDER con un mouse remoto) y, por supuesto, varias macros para impresionar a la multitud de la década de 1990, jaja. Ojalá me hubiera ocupado de eso y de la IA un poco más que un pasatiempo en este momento, pero la retrospectiva es 20/20.

    • steve dice:

      Me pregunto cuántas personas aquí usan un asistente doméstico y truncamientos (https://home-assistant.io/components/snips/), parece prometedor. Lo más importante es probablemente entrenar el reconocimiento de voz fuera de línea, las grandes empresas tienen enormes datos con los que trabajar.

  • aburrido dice:

    ¡Buen artículo! Era un escéptico que no creía en la propaganda sobre Alexa, pero luego me regalaron uno para Navidad. Resulta ser una especie de magia poder dar órdenes para tocar esta canción o saltarme aquella mientras cocino o cocino platos.

  • MacSimski dice:

    qué puede salir mal ...

  • Charles dice:

    ¿Existe un sitio web donde puedas ver cosas más creativas con estos intrusos? Saltarse canciones en serio mientras se prepara la cena no es un punto de venta, encender y apagar las luces no es un punto de venta.
    Alexa podría producir una receta en mi televisor en mi cocina. Leerlo para mí podría ser más impresionante. Posiblemente tome mensajes de correos electrónicos. ¿Hacer un número serio? Encienda la luz de mi bomba si la temperatura desciende por debajo de 25. Dígame, ¿cuál es mi consumo de energía durante el día? ¿Una semana? ¿Mes?

  • Dennisdebel dice:

    ¿Falla? ¿Capacidad? ¿Lo es? * se arrastra de nuevo debajo de una roca *

  • Evan dice:

    Si desea una opción de alojamiento propio, consulte el proyecto Flask-Ask. Opero esto con Pi y puedo ejecutar código arbitrario con comandos de voz.

    La desventaja de Alexa es que los pedidos de capacidades personalizadas son aproximados. es decir, todos los comandos deben tener el formato "solicitar nombre de aplicación para [do action]”.

    • Al Williams dice:

      Hay alguna forma de hacerlo mejor, pero no la he explorado. Incluso pueden limitarlo para no contaminar el espacio de nombres. Cuando obtuve Alexa por primera vez, tenía que hacer eso con los controles remotos Harmony. "Computadora, pídale a Harmony que encienda un televisor". Pero luego publicaron una habilidad en la que Alexa ahora sabe que cuando digo "Enciende la TV", quiero usar Harmony. El problema es que solo sabe de una Harmony y de la otra que tienes que hacer algo raro como IFTTT o Younomi o ...

      Y Google Home no solo te sigue preguntando sobre Harmony, sino que, peor si lo olvidas, dirá "Parece que quieres Harmony. ¿Quieres probar eso?". Supongo que está bien, pero estoy un poco ofendido de que SEA lo que quiero y aún quiero confirmar. Pude ver si era "Parece que quieres lanzar una aplicación ICBM. ¿Quieres probar eso?" Pero para mi TV. También me frustra que si estoy dormido y no puedo reconocer mi voz, no se encenderá Harmony. Realmente no me importa si la gente cambia mi televisor. Lo consigo para cerraduras de puertas o lo que sea.

      Una de las cosas que no me gustan de ambos es que están devaluados. ¿Por qué no puedo tener una sección de "piratas informáticos" en la configuración del sitio que me permita hacer cosas como habilitar / deshabilitar la identificación por voz para servicios particulares (tienes que reconocer mi voz para abrir la puerta, pero todos pueden cambiar los canales de TV)? O, como han dicho algunos, apunta a un servicio web arbitrario.

  • Dan dice:

    Realmente quiero estar entusiasmado con esto, pero parece increíblemente complicado obtener un resultado final tan simple. Al igual que en el comentario anterior, rápidamente me sentí frustrado con el formato de los comandos "Alex le pide a APPNAME". Usar "Alexa ejecutar APPNAME" es un poco mejor, pero solo funciona si no tiene comandos para entregar.

    Además, todo el diseño es demasiado complicado para mi gusto. Quiero que la cosa ejecute un script de Python en el Pi que se encuentra a 5 pies de distancia. La idea de que para hacer eso, tengo que salir a Internet y regresar, y configurar Ability con Amazon como si lo publicara públicamente ... uf.

    • John Blankenship dice:

      De hecho, estoy de acuerdo contigo, Dan: estoy trabajando en un proyecto que crearía una habilidad de Alexa que le permitiría usarla con una computadora IU capaz de comunicarse a través de LAN (TCP, UDP). Si algún desarrollador de Alexa está dispuesto a ayudar (incluido AI Williams), envíeme un correo electrónico a [email protected]

Alberto Gimenez
Alberto Gimenez

Deja una respuesta

Tu dirección de correo electrónico no será publicada.