2010-05-11 24 views
10

Un loro aprende las palabras y frases más comúnmente pronunciadas en su entorno para que pueda repetirlas en momentos inapropiados. Entonces, ¿cómo crearías una versión de software? Suponiendo que tiene acceso a un micrófono y puede grabar sonido a voluntad, ¿cómo lo codificaría sin requerir recursos infinitos?¿Qué algoritmo usarías para codificar un loro?

Lo mejor que puedo imaginar es dividir la secuencia usando silencios en el sonido, y luego usar un poco de reconocimiento de patrones para codificar cada uno como una lista de tokens, almacenando nuevos cuando los encuentre. Hashing las secuencias de tokens y contar las ocurrencias en una base de datos, puedes construir una imagen de las frases pronunciadas con mayor frecuencia. Pero dada la gran variedad de frases, ¿cómo evitar que esto se convierta en una gran lista? Y la gran cantidad de pares que coinciden seguramente generaría muchos falsos positivos de la naturaleza combinatoria de la coincidencia.

¿Usaría una red neuronal, ya que así es como lo maneja un verdadero loro? ¿O hay otra manera más inteligente de emparejar patrones a gran escala en datos analógicos?

+1

La tienda de mascotas cerca de mí tiene un loro que dice "hola" y "adiós" cuando las personas entran y salen de la tienda, por lo que el loro también imita entender el contexto. –

Respuesta

0

quizá - no intentan almacenar cada clip por separado, en cambio, hacer un partido de similitud con el número de destino que desea aprender dicen que tal vez una docena ... por lo que en llega un sonido - que coinciden con la más cercana de la docena que está rastreando, y cuando encuentra un patrón suficiente para una de esas, promedia este nuevo sonido en la versión almacenada, dando una nueva versión ...

si el sonido entrante no coincide con nada almacenado - tirar a la basura.

el sistema de arranque sería la parte más difícil - para distinguir el número inicial de frases de destino ...

todos modos - de la parte superior de la cabeza. hth

3

It's been done, sorta.

Edit: OK, ya que los furbys están fuera, voy a sugerir un tipo de solución Gordian-knot. Conecte una caja con un parlante y un micrófono, y pegue un loro real. Funcionará muy bien para la demostración, y una vez que tenga algo de capital de riesgo puede comenzar a trabajar en su versión de red neuronal. Las redes neuronales (tal como se implementaron hasta este momento) son prácticamente inútiles, pero deberían ser lo suficientemente buenas para guiarte en la demo de segunda ronda, y en ese momento serás demasiado grande para fallar.

+0

Del artículo: "Hubo un concepto erróneo común de que repitieron palabras que se dijeron a su alrededor" – interjay

+1

@interjay: la palabra clave es "común", lo que significa que no soy el único idiota que pensó que los Furbys repitieron lo que se dijo ellos. Creo que * my * furby recibió todas esas palabrotas de otro lado - ¡vaya! – MusiGenesis

2

Probablemente usaría cadenas de Markov para emular eso.

Si no ha utilizar cadenas de Markov para generar texto aleatorio naturales (o del habla) antes, echa un vistazo a Fun With Markov Chains

2

¿Cómo evitar que esto sólo convertirse en una lista enorme?

Supongo que podría mantener una lista finita de palabras recientes, y una lista infinita de palabras frecuentes. Si el loro escucha una palabra que no ha escuchado antes, se almacena en su "memoria a corto plazo". Si escucha la palabra nuevamente, puede mover la palabra a la lista de palabras frecuentes y almacenarla indefinidamente. De vez en cuando, puede purgar la lista de palabras recientes que contiene solo palabras o sonidos que el loro solo escuchó una vez.

+2

O en lugar de purgar, use un caché FIFO, donde una repetición de una frase lo empuja al final de la lista, por lo que permanece en la caché por más tiempo. –

Cuestiones relacionadas