¿Existe una forma fiable de ocultar/transmitir un mensaje en expresiones vocales (habla, canción,...)

Supongamos Bob. Bob quiere transmitir el siguiente mensaje simple (un ejemplo) a Cassandra:

Camine 5 pies hacia adelante, gire 90 grados en el sentido de las agujas del reloj, camine otros 4 pies y cave 3 pies en el suelo.

Fácil, ¿verdad? Ahora aquí está el giro: requiero que Bob no diga el mensaje directamente, sino que de alguna manera lo oculte o lo transmita dentro de otras expresiones vocales. Este podría ser él hablando o cantando. Bob y Cassandra tuvieron la oportunidad previa de acordar un esquema de código, y eso es lo que busco.

  • no debe haber ningún vínculo con el mensaje oculto dentro de las palabras del enunciado de Bob. Entonces, algo como "usar cada primera palabra de cada segunda oración" no es viable. El significado de las palabras reales habladas/pronunciadas no puede jugar ningún papel dentro del esquema.
  • No saben de antemano si se utilizará una canción o una conversación, por lo que ambos modos deben ser viables. Puntos de bonificación si incluso se pueden usar gritos al azar.
  • El esquema debe permitir una precisión casi matemática. No debería haber dudas si Bob se refería a 3 o 4 pies.
  • Suponga que Cassandra, la receptora, puede escuchar el mensaje con claridad. La transferencia de audio no es mi punto, solo estoy buscando un esquema de codificación.
  • Me imagino que se podrían usar algunos parámetros de la voz humana o de las ondas sonoras en general. No estoy seguro de cuál. El volumen no debería tener ningún significado, por lo que la amplitud está descartada, ¿verdad? ¿Frecuencia?
  • La facilidad de uso no es una preocupación principal. Si ambos necesitan ser genios y tener un tono absoluto para que su idea funcione, que así sea. Si Cassandra necesita saber "oh, chico, eso es 120 Hz en este momento", que así sea.

Teniendo en cuenta mis requisitos, objetivos y limitaciones, ¿existe alguna forma de utilizar alguna propiedad acústica de la voz humana como un "canal adicional" para transmitir un segundo mensaje (oculto)? ¿Cómo funcionaría tal mapeo?

¡El número de sílabas suena bien! Lo pensaré bien. ¿Te importaría expandirlo a una respuesta? También amplié mis limitaciones gracias a tu comentario.
¿Cómo determinas la "mejor respuesta" aquí? (Demasiado interesante para cerrar como generación de ideas...)
@Guran Como siempre en este SE, esta pregunta no tiene una respuesta simple. ¿Elijo la respuesta que se ajusta a mis necesidades narrativas personales? ¿La que parece ser la solución de la forma más general? ¿El que mejor se ajusta a mis criterios? TbH, esta es la generación de ideas (como todas mis otras preguntas, y el 60% de WB SE :)), pero trato de restringirlo tanto como puedo.
@openend Lo sé, por eso hice un comentario en lugar de un VTC. ;) De todos modos, publiqué una respuesta que prioriza la exactitud matemática sobre la facilidad de uso. Espero eso ayude.
Creo que puede satisfacer su requisito de tantas maneras que se convierte en una pregunta sin sentido. Dado que Bob y Cassandra acordaron un esquema de codificación, pueden usar eso, y ningún observador externo puede leer el mensaje (a menos que obtengan el esquema de codificación)
@Burki Esto en realidad no es una pregunta de seguridad/secreto. Me preocupa más cómo codificar información en el habla/canción sin usar el significado real de las palabras pronunciadas.
♫Y caminaría 500 pies, giraría a la derecha y caminaría 400 más, y cavaría 300 pies...♫ (El truco es saber dividir todo por 100...)
¿Por qué se descarta el volumen? La modulación de amplitud en la vida real utiliza muy bien el "volumen" de una señal de radio. No es la amplitud absoluta, sino el cambio de amplitud, lo que lleva la información.
Esta es una tecnología muy antigua. Puede ser que data de los antiguos egipcios. Hay una película antigua realmente genial que puedes ver que trata sobre este tipo de "magia": Nightmare Alley: wikipedia . Por supuesto, la película no explica cómo hacer la magia, pero explica por qué. > "Mademoiselle Zeena" (Joan Blondell) y su esposo alcohólico, Pete > (Ian Keith). Una vez que un acto de vodevil de gran éxito, Zeena y Pete usaron un código ingenioso para hacer que pareciera que tenía poderes mentales extraordinarios ... Para mantener su acto, Zeena se ve obligada a t
No nos ha dado forma de clasificar los diferentes métodos. Un esquema simple como 'Simón dice' funcionaría pero sería fácil de descifrar, mientras que algunos de los esquemas propuestos requerirían horas de planificación y decodificación. ¿Cuáles son las prioridades? Facilidad de uso, seguridad, velocidad de datos, ¿suena normal?
@RobinBennett Sonar normal hubiera sido la prioridad. Sin embargo, debido a una serie de otros problemas, decidí (para mi proyecto) ayudar al "canal" de voz con el movimiento del cuerpo. (gestos)

Respuestas (14)

Código Morse y longitud de la sílaba: es decir, use la longitud de la sílaba para codificar un mensaje en código Morse, por lo que una sílaba larga para un guión, una sílaba corta para un punto. Fácil de decodificar si es interceptado - sí, absolutamente. Pero no mencionaste la posibilidad de que alguien estuviera escuchando para encontrar un mensaje oculto, solo que necesitaba ser codificado.

Sin ningún tipo de entrenamiento, seguramente se notará un poco, aunque una excusa como "Mi cadencia varía cuando estoy nervioso" podría ayudar. Sin embargo, con el entrenamiento, podrá mantener las sílabas de guiones y puntos solo ligeramente diferentes de las sílabas verdaderas y, por lo tanto, perfectamente viables.

Me recuerda a esta operación militar en la que el ejército colombiano envió un mensaje oculto a los rehenes... utilizando una canción pop
¿Qué tal el código Morse con palabrotas? Cualquier cosa con 4 letras es un punto, cualquier cosa más larga es un guión. Relativamente fácil de encajar una letra en cada oración normal sin tener que pensar demasiado, fácil de decodificar y casi indistinguible de la conversación de un soldado normal.
@RobinBennett Eso podría funcionar si no te importa jurar como un marinero.
Suponiendo que los números estén escritos y se omitan las comas, pero se deben incluir espacios, debe codificar 117 caracteres. Suponiendo que tenga alguna forma específica de indicar un espacio entre palabras, para Morse habrá 376 "caracteres" individuales que deben transmitirse; puntos, guiones, el espacio entre letras y los espacios entre palabras.

Puedes gritar si quieres, porque no son los sonidos lo que importa, son los silencios entre ellos .

Los espacios entre las palabras son lo que cuenta, ya sea que elija codificar en Morse o no. La cadencia del habla incluye tanto los espacios como los sonidos y un poco de tiempo cuidadoso le permitirá transmitir el mensaje.

La principal desventaja de todo lo relacionado con el código Morse es que tiene una densidad de información muy baja. Habrá muchos gritos para que transmitas tu mensaje.

Respiración y recuento de palabras

La forma más simple de codificación que se me ocurre es esta:

Ya sea que Bob hable o cante, preste atención a cuando respira. Cuente el número de palabras entre cada respiración. Será un número entre uno y ocho. (Si no, es un ruido sin sentido, un relleno )

Al combinar dos de estos números, el esquema permite 64 caracteres, más que suficiente para AZ, números y espacios.

De acuerdo, esto será muy difícil de codificar/decodificar sobre la marcha, pero con una preparación mínima, Bob puede disfrazar fácilmente cualquier mensaje en un discurso o una canción.

Puede ocultar el mensaje en el orden de las palabras donde la gramática lo permita (obviamente, eso funciona mejor cuanto más permite el lenguaje utilizado para reordenar las palabras).

Por ejemplo, considere la oración:

Hoy comeré pizza para el almuerzo.

Puede mover "hoy" y "para el almuerzo" a muchas posiciones diferentes:

Voy a comer pizza hoy para el almuerzo.
Almorzaré pizza hoy.
Para el almuerzo comeré pizza hoy.
Para el almuerzo de hoy, comeré pizza.
Hoy para el almuerzo, comeré pizza.

Entonces puede codificar un dígito entre 1 y 6 en el orden de las palabras. Tenga en cuenta que el mensaje oculto es independiente del mensaje obvio; el mismo dígito se puede ocultar en oraciones como

Ayer vi Doctor Who después del trabajo.
A veces voy a nadar por la mañana.

Ahora claramente hay oraciones con diferente número de posibles órdenes de palabras. Pero debería ser posible crear un código que funcione con oraciones arbitrarias (excepto que las oraciones con un orden de palabras fijo no podrán dar ninguna información).

Una posible estrategia de codificación podría ser la siguiente:

Para cada oración, determine el número de posibles órdenes de palabras; llamémoslo capacidad de oración. Por ejemplo, la oración de ejemplo anterior tendría una capacidad de 6. Luego, tome tantas oraciones que el producto de sus capacidades sea al menos 27 (suficiente para codificar 26 letras y un espacio). Estas oraciones dan un grupo de código.

A continuación, asigne un número a cada oración del grupo de códigos ordenando lexicográficamente las oraciones posibles y numerándolas comenzando por cero. La oración de ejemplo es la última en el orden, por lo tanto, obtendría el número 5.

Luego, calcule el valor del grupo de código multiplicando el número de cada oración por las capacidades de todas las oraciones siguientes y luego sumándolo todo.

Si el valor resultante es cero, es un espacio, si está entre 1 y 26, describe una letra, y si es más grande, entonces el codificador cometió un error.

Por ejemplo, considere el siguiente texto:

Almorzaré pizza hoy. Lo compré esta mañana. De postre planeo comer fresas o cerezas.

La primera oración tiene una capacidad de 6, la segunda tiene una capacidad de 2, la tercera tiene una capacidad de 4 ("para el postre" se puede poner al principio o al final, y también se puede voltear el orden de las fresas y las cerezas sin cambiando el significado).

El producto de las capacidades es 6×2×4=48, claramente mayor que 27, pero las dos primeras oraciones solo dan 12, por lo que el grupo de código consta de esas tres oraciones.

La primera oración tiene otros dos posibles órdenes que la preceden en orden lexicográfico (las dos variantes comienzan con "for lunch"), por lo que obtiene el valor 2. La segunda oración es la primera en la lista de posibles órdenes de palabras, por lo que obtiene el valor 0. Y la tercera oración tiene solo la que tiene fresas y cerezas precedidas lexicográficamente, por lo que obtiene el valor 1.

Así, el valor del grupo de códigos es 2×2×4 + 0×4 + 1 = 17, que corresponde a una Q.

La esteganografía es la codificación y decodificación de información oculta a simple vista en imágenes, archivos de audio, lo que sea. Es mucho más fácil si permite el hardware en la mezcla, por ejemplo, codificando un mensaje en el ruido por debajo del nivel audible, o ajustando la frecuencia de cada tono lo suficiente como para que la diferencia se pueda medir pero no escuchar.

Pero quieres poder hacer esto simplemente cantando o hablando. Para cantar, un posible esquema de codificación para un muy buen cantante sería el vibrato. Puede enviar mensajes codificados numéricamente controlando cuántos "tiempos" de vibrato usa para cada frase.

Pero también desea poder usar hablar, y la codificación no puede estar en las palabras de acuerdo con sus criterios. Eso deja cosas como el tono, la duración, el volumen y los sonidos que no son palabras, como inhalaciones, duración entre palabras, 'umm's y 'awws', etc. Omite el volumen, ya que es demasiado difícil determinar el volumen absoluto y probablemente quieras que lo haga. trabajar para diferentes niveles de ruido de fondo,

Para mayor complejidad, agréguelos. Por ejemplo, tomar aire y luego decir 'um, deberíamos irnos' podría significar algo completamente diferente a simplemente decir 'deberíamos irnos', que podría ser diferente a suspirar y luego decir lo mismo. No es el 'debemos irnos' lo que importa, son los patrones del discurso alrededor de las palabras.

Entonces, 'toma de aire + um + tono ascendente al final de la oración' (como en una pregunta) significa una cosa. 'respirar exhalar + 2ums en oración + tono plano' significa otra cosa. Inventa tantas combinaciones diferentes como necesites para codificar toda la información.

Lo bueno de codificar su mensaje en los 'metadatos' de hablar en lugar de palabras o longitudes de sílabas o algo relacionado con palabras específicas es que puede hacer que funcione con cualquier texto. Lo que importa no es el texto en sí, sino cómo lo dices o lo cantas. Podría leer la guía telefónica de esta manera y aun así transmitir su mensaje.

¿Algo como Jeremiah Denton? Como prisionero de guerra, en una entrevista televisada parpadeó la tortura en código morse. https://youtu.be/rufnWLVQcKg

Por qué voté negativo (sin ofender): si bien esta es una información interesante, ignora por completo todas las restricciones y requisitos.

Resumen

Puede usar modulación de amplitud o frecuencia de la voz para transferir datos entre 5 WPM (máximo realista) y 20 WPM (probablemente sobrehumano). Podría ir arbitrariamente alto con implantes sintéticos o cibernéticos (hasta alrededor de 5 mil millones de WPM).

Esencialmente, implica levemente (o mucho, si el sigilo no es un problema) subir y bajar el volumen o el tono con una sincronización razonablemente precisa. Su socio interpreta estos cambios como datos binarios, que pueden codificar texto u otra información usando una variedad de formatos.

Un código tipo ASCII de 32 caracteres y 5 bits es probablemente la opción más rápida, ya que el código Morse es un poco más lento, pero menos propenso a errores.

También puede usar AM y FM al mismo tiempo (esto se llama modulación de amplitud en cuadratura, o QAM 0 ), pero eso sería extremadamente difícil de lograr para las personas normales, y no lo he discutido aquí.

Modulación de amplitud y frecuencia (AM y FM)

Los aspectos obvios de la voz humana que se traducen en esquemas básicos de transmisión de radio son la amplitud y la frecuencia. Al cambiar rápidamente cualquiera de las propiedades, puede codificar ondas de sonido de baja frecuencia en la onda portadora de alta frecuencia.

Animación de una señal base simple modulada con modulación de amplitud y frecuencia.
Ejemplos AM/FM. 1

Ondas de sonido AM / FM

En lugar de traducir a ondas de radio y viceversa, simplemente puede alterar la amplitud o la frecuencia del sonido a velocidades muy altas (aproximadamente el doble de la velocidad de la frecuencia máxima que está representando). Esto podría ser posible para un sintético, pero probablemente sería imposible para un humano normal en tiempo real.

Sin embargo, siempre puede codificar la señal en tiempo no real. No encuentro ningún dato sobre las variaciones de laringe más rápidas de las que son capaces los humanos, pero supongo que no supera los 10 Hz, y probablemente menos que eso. Varios estudios han demostrado que los músculos grandes pueden contraerse en 100 a 300 ms 2 , lo que se traduce aproximadamente en 3 a 10 Hz, respectivamente.

Un segundo de una señal de 200 Hz tardaría 40 segundos o más en codificarse. También sería bastante difícil de codificar y decodificar.

Activación/desactivación y modulación por desplazamiento de frecuencia

La codificación de encendido y apagado 3 es una forma sencilla de modular datos binarios utilizando cambios de amplitud extremos. La presencia de ruido representa lógica alta, mientras que la ausencia de ruido representa lógica baja. Podemos extender esto usando dos amplitudes diferentes, pero presentes. O utilizando dos frecuencias diferentes, lo que se conoce como modulación por desplazamiento de frecuencia 4 .

Imagen que muestra la modulación binaria por desplazamiento de frecuencia.
Manipulación binaria por desplazamiento de frecuencia. 5 Modulación por desplazamiento de amplitud binaria. 6
Imagen que muestra la modulación por desplazamiento de amplitud.

Codificación de un mensaje en binario

En este punto, tienes un alfabeto binario simple. Puede utilizar este alfabeto para codificar cualquier tipo de datos que desee. Puede tener palabras de longitud fija que representen letras específicas en un alfabeto tradicional (ASCII 7 o Unicode 8 ), palabras de longitud variable que representen un conjunto intermedio de símbolos (código Morse 9 ), datos binarios que representen niveles de sonido o información de imágenes, etc.

El mayor problema aquí es solo el factor humano. Cuanto más compleja sea su información, más difícil será codificarla y decodificarla. En algún momento, hay un límite físico. Es probable que su mejor caso sea algo como ASCII, reducido a 5 bits o 32 caracteres. A 2,5 Hz, cada carácter tarda dos segundos.

También se podría utilizar el código Morse codificado en binario (BEMC), pero requiere unos 6,2 bits por carácter (un 25 % más).

(Escribí un programa C simple 10 para convertir una cadena de entrada a BEMC. Para probar el inglés normal, escogí un artículo aleatorio de Wikipedia, obtuve el artículo para "Lake Chub" 11 , eliminé las líneas nuevas del texto y usé el contenido como entrada para el programa. El programa procesa caracteres alfabéticos y numéricos, junto con espacios. La entrada constaba de 4972 caracteres, de los cuales 4739 se procesaron y convirtieron en 29690 bits. En promedio, esta codificación usó 6,27 bits por carácter. Procesamiento solo de caracteres alfabéticos (para comparar con la codificación solo alfa de 5 bits), se procesaron 4696 y se convirtieron a 29024 bits, que usaban 6,18 bits por carácter).

La ventaja de BEMC es que cada guión y punto tiene una transición de mayor a menor y de menor a mayor para cada carácter, por lo que es relativamente fácil realizar un seguimiento del tiempo.

Técnicamente, tiene que codificar mentalmente dos veces (una vez del alfabeto a Morse, luego otra vez de Morse a binario), pero en la práctica hay poca distinción entre BEMC y simplemente usar el código Morse ternario (guión, punto, espacio) directamente: los guiones son largos períodos de lógica alta con un período corto de lógica baja, los puntos son períodos cortos de lógica alta con un período corto de lógica baja y los espacios son períodos medios de lógica baja.

La longitud media de palabra de la escritura típica es de 4,8 caracteres 12 . Agregue 1 carácter para espacios entre palabras para 5,8 caracteres por palabra. Un mensaje de texto promedio tiene 7 palabras 13 , o alrededor de 40 caracteres. A 5 bits por carácter, un mensaje de texto tarda 200 bits u 80 segundos a 2,5 Hz. 20 segundos a 10 Hz.

Alternativamente, esto equivale a 29 bits por palabra, 5,2 WPM a 2,5 Hz o 21 WPM a 10 Hz.

Usando esto en la práctica

Obviamente, todo esto no es práctico para propósitos normales. Hay una manera perfectamente buena de comunicarse con el aparato vocal humano: el habla.

Pero si desea transmitir mensajes cortos, puede hacerlo. El truco está en cambiar las frecuencias o amplitudes lo suficiente para que la otra persona decodifique los datos de manera constante y sin errores, pero que otras personas no escuchen la diferencia.

Dudo que haya alguna forma de evitar que otros se den cuenta de que tu forma de hablar o cantar es rara, pero no sabrían de inmediato lo que estabas haciendo. Además, no necesariamente conocerían su codificación exacta, aunque podrían descifrarla fácilmente a partir de una grabación.

Es probable que el mayor problema aquí sea mantener un tiempo razonablemente consistente durante duraciones de un minuto, pero supongo que es factible.

Implantes Sintéticos o Cibernéticos

Una persona sintética, o una persona con implantes cibernéticos, podría utilizar plausiblemente estas técnicas para alcanzar tasas de transferencia de datos mucho más altas. La frecuencia máxima alcanzable en el aire es de unos 5 GHz 14 , lo que nos limita a unos 2,5 Gb/s, que son 86 millones de palabras por segundo, 5000 millones de WPM, 12 millones de textos por segundo u 81 nanosegundos por texto.

Pero con toda probabilidad, podría hacerlo mucho mejor con métodos de transferencia de datos no acústicos si tuviera acceso a estos niveles de electrónica.

Referencias

0 Un artículo de Electronic Notes , Qué es QAM: modulación de amplitud en cuadratura . https://www.electronics-notes.com/articles/radio/modulation/quadrature-amplitude-modulation-what-is-qam-basics.php
1 Tomado de Wikipedia bajo licencia Creative Commons . https://en.wikipedia.org/wiki/File:Amfm3-en-de.gif
2 Estudio de investigación, Unidades de contracción rápida y lenta en un músculo humano de 1971. Encontrado en el sitio web de Journal of Neurology, Neurosurgery, and Psychiatry . https://jnnp.bmj.com/content/jnnp/34/2/113.full.pdf
3 Un artículo de Wikipedia ,Tecla de encendido y apagado . https://en.wikipedia.org/wiki/On%E2%80%93off_keying
4 Un artículo de Wikipedia , modulación por desplazamiento de frecuencia . https://en.wikipedia.org/wiki/Frequency-shift_keying
5 Tomado de Wikipedia bajo la licencia Creative Commons . https://commons.wikimedia.org/w/index.php?curid=635074
6 Una versión modificada de (5), enviada bajo la licencia original.
7 Tabla de códigos ASCII. http://www.asciitable.com/
8 Descripción general de Unicode del Consorcio Unicode. https://home.unicode.org/basic-info/overview/
9La increíble respuesta cs.stackexchange de babou a ¿Es el código Morse binario, ternario o quinario? . https://cs.stackexchange.com/a/39922
10 Mi programa C alojado en el compilador OnlineGDB C. https://onlinegdb.com/BkMqmOvUS
11 Un artículo de Wikipedia , cacho de lago . https://en.wikipedia.org/wiki/Lake_chub
12 Un artículo de Peter@Norvig.com , English Letter Frequency Counts: Mayzner Revisited o ETAOIN SRHLDCU . http://norvig.com/mayzner.html
13 Un artículo de Crushh , K, Wrap It Up Mom .https://crushhapp.com/blog/k-wrap-it-up-mom
14 La física de Ron Maimon.stackexchange responde a ¿Existe un límite de frecuencia superior para el ultrasonido? . https://física.stackexchange.com/a/23427/90152

Vaya gracias miguel! ¡Hacer un trabajo tan bueno y minucioso cuando el pastel proverbial (la bonificación de puntos de respuesta :)) ya se ha comido es algo que puedo admirar!

Lo primero que pensé fue que puedes usar los principios de la esteganografía aquí. pero ha rechazado los patrones más simples en la primera viñeta (no debería haber ningún enlace al mensaje oculto dentro de las palabras del enunciado de Bob).

Entonces, siguiente opción. La mayoría de la gente habla por la boca, no por la nariz. Puede intentar que Bob hable palabras regulares nasalmente. Elija aquí dos tipos de palabras, por ejemplo, monosílabas y bisílabas . Basado en esto, ahora puede convertir estos sonidos en un código morse para caracteres ingleses .

EDITAR:

Ahora me doy cuenta de que solo está buscando una forma de codificar la información de manera uniforme, en cuyo caso, incluso el habla regular con las palabras monosílabas y bisílabas correctas será suficiente.

Perdón, no entendí cómo importaría la voz nasal en este contexto.
@openend Creo que no entendí bien su pregunta la primera vez en el sentido de usar una propiedad acústica además del habla normal. Por lo tanto, quería sugerir el uso de la voz tanto nasal como normal para la comunicación, y la nasal se usa para promover el esquema de morse. PERO después de volver a leer su pregunta, ahora entiendo que solo está buscando una forma de codificar la información de manera uniforme, en cuyo caso, incluso el habla regular con las palabras monosílabas y bisílabas correctas será suficiente.

Muchos han cubierto la codificación de mensajes para hablar o escribir, pero no vi ninguno que cubriera el canto.

Hay muchos idiomas como el mandarín o el cantonés que usan la tonalidad para cambiar el significado de una palabra. Usar la tonalidad en un idioma que no le atribuye un significado natural, especialmente durante la canción, es una excelente manera de ocultar mensajes.

Por ejemplo, "adelante" es un tono neutral, "girar a la derecha" es un tono ascendente y "girar a la izquierda" es un tono descendente. Un tono de inmersión (neutral, más bajo, de vuelta a neutral) podría indicar hacia abajo, mientras que lo contrario de un tono de inmersión podría indicar hacia arriba. Varias palabras cantadas en un tono particular significan "esa dirección para tantas unidades como palabras. Este esquema permite codificar la dirección y la magnitud en una canción.

La frase "cuando el pájaro vuele alto" cantada en tono ascendente indica "girar a la derecha, luego avanzar 5 unidades". También puede haber un vocabulario preexistente para otras cosas importantes, como mencionar un perro que significa "guardias", describir lo hermoso que es algo significa "buscar algo con descripción". Para obtener más ejemplos de esto, puede leer las cartas enviadas por los prisioneros de guerra de la Segunda Guerra Mundial que tienen mensajes ocultos codificados en declaraciones bastante inocuas.

Podría haber una señal física o incluso otra codificación tonal para indicar "estas son instrucciones", como un determinado acorde o parte de una canción, como el puente que conduce al coro final.

Finalmente ha llegado el momento: neutral, camine 5 pies hacia adelante

para que golpeemos - tono ascendente, gire a la derecha, camine 4 pies

nuestros enemigos abajo - tono de inmersión, 3 pies por debajo de donde estás

La combinación de palabras clave, tonalidad y número de palabras se puede utilizar para transmitir discretamente mensajes ocultos en una canción sin alertar a los oyentes casuales de que hay un mensaje oculto.

Buena respuesta, pero ¿y si subir es correcto, sumergir es abajo y neutral es adelante? ¿Cómo giro a la izquierda o alrededor y le digo a alguien que mire hacia arriba? ¿O cada giro a la izquierda se canta como tres derechas, en tono ascendente, seguidas con 4 palabras cada una? Todavía no estoy seguro... Cantar también fue mi primer pensamiento. "Siga la calabaza para beber" y otras referencias al ferrocarril subterráneo prevalecen aquí, incluso si no coinciden exactamente con los requisitos (significado en negrita de la cláusula de las palabras)
Estás haciendo preguntas que creo que ya están respondidas por mi respuesta. Ya identifico cómo girar a la izquierda y cómo codificar significados a frases. Si está proponiendo un idioma que no tiene una dirección de "giro a la izquierda", tendrá que combinar otras instrucciones existentes para crear una.
Tiene razón, hojeé demasiado y pensé que tenía la imagen completa/me centré demasiado en la implementación de este caso. Todavía cuestionaría la ligera diferencia entre un tono descendente y un tono descendente; creo que haría que esto sea casi imposible de usar en una aplicación de la vida real para obtener instrucciones confiables. A menos que haya delineaciones muy, muy claras para el final de una línea en la canción (porque no puedes verlas)
pero gracias por responder / mis disculpas por cuestionar lo que no había leído a fondo

Morse es lo primero que probablemente le venga a la mente, pero, como se señaló, es de una densidad increíblemente baja.

Si puede hacer que el tono de la voz cambie en 16 niveles distinguibles, puede usarlo para codificar códigos hexadecimales, que son una forma razonablemente más densa de codificar algo que Morse.

Dado que probablemente solo necesite codificar 26 letras + 10 números, nos da 36 números hexadecimales, que encajan perfectamente en dos códigos hexadecimales:

Pitch. Hex
Pitch1 - 0
Pitch2 - 1
...
Pitch10 - A
Pitch16 - F

Letras A...Z - combos de tono de 00-1A

Números 0-9 - combos de tono de 1B-24

En realidad, hay tanto excedente que es posible que desee reducir el alfabeto a 16 valores (para usar un solo dígito hexadecimal para codificar) o usar una codificación de números de dígitos más altos, si puede esperar distinguir entre 36 tonos de voz). Por ejemplo, podría reducir 0 a O, 1 a I, usar U para V, I para J e Y, deshacerse de Q, etc. Algo de esto se usó en las primeras máquinas de escribir, por ejemplo. Todo depende de qué tan inteligente pueda asumir que es el destinatario para que pueda decodificar:

Camine 5 pies hacia adelante gire 9o grados en el sentido de las agujas del reloj camine otros 4 pies y excave 3 pies en el suelo.

Además, podría tener un orden de tonos diferente para que los tonos más bajos y más altos codifiquen valores menos utilizados, para reducir la atención a los cambios de tono.

Entonces, ahora tiene una codificación hexadecimal modulada por tono, que naturalmente podría vincularse a las sílabas. Cada 2 sílabas codifica una letra de tu alfabeto (incluidos los números).

El mensaje no es importante, ya que suelen ser espacios entre el texto.

Canto: Codificado en tonterías

Hay un montón de respuestas que cubren la palabra hablada. Muchos de ellos, aunque ligeramente perceptibles en una conversación/habla normal, serían extremadamente obvios cuando se cantan. No hay razón para no tener dos (o tres si tiene algo más planeado para gritar) diferentes medios de codificar su mensaje.

Muchas canciones tienen letras sin sentido como La La La o Na Na Na. Por ejemplo, De Do Do Do de Police, De Da Da Da tiene el coro:

De do do do de da da da Is all I want to say to you 
De do do do de da da da Their innocence will pull me through 
De do do do de da da da Is all I want to say to you 
De do do do de da da da They're meaningless and all that's true

El cual podría modificarse fácilmente para codificar su mensaje, ya sea utilizando el código Morse y variando entre DO y DA o con algún otro esquema. Y, de hecho, probablemente querrá probar y encontrar algún otro esquema, porque el código Morse usa entre 1 y 4 bits por letra, y la canción de Police, por ejemplo, solo tiene 32 bits por coro (96 con tres repeticiones), lo que significa que probablemente solo tiene alrededor de 40-50 letras para su mensaje. Dicho esto, probablemente puedas encontrar una canción con más sílabas sin sentido (tal vez Oh La La @ ~110 de Goldfrapp).

Dicho todo esto, probablemente querrá acortar un poco el mensaje. Simplemente eliminando los espacios, da un mensaje de 258 caracteres una vez convertido a código Morse (190 si se descuentan los espacios). Podría acortar eso considerablemente al no usar un inglés completo adecuado. Por ejemplo, "Go N 5 f W 4 f Dig 3 f" tiene solo 58 caracteres una vez convertido en código Morse, que debería caber fácilmente en la canción de Police.

Recuerde que la brevedad es bastante importante al codificar un mensaje dentro de otro, a menos que esté planeando un discurso de una hora o un concierto completo. Casi cualquier tipo de codificación tendrá una velocidad de transmisión más lenta que el medio que utiliza sus requisitos.

Ya se ha mencionado la esteganografía, pero no es el mejor método para ello. La esteganografía moderna generalmente implica la codificación binaria en los valores menos significativos de un archivo multimedia que se puede extraer comparando un archivo original secreto con el modificado para extraer las diferencias. Esto crea variaciones tan pequeñas que son indistinguibles del ruido normal, mientras que también es 100% a prueba de errores.

Cómo se aplica esto a un archivo de audio:

Un archivo de audio se descomprime en una cadena continua de valores que se pueden representar con números. Digamos para este ejemplo que está utilizando una profundidad de 8 bits. Su primer clip podría verse como [122,143,201,203,198,152,100,84,...] y su segundo clip podría verse como [122,144,202,203,199,153,101,84,...]. Para el oído humano, estas dos pistas son indistinguibles, pero restando una de la otra, obtienes el siguiente binario [0,1,1,0,1,1,1,0] que es la letra "n" en ASCII .

La mayoría de los archivos de audio modernos tienen una frecuencia de muestreo de 44 100 Hz con una profundidad de 16 bits, lo que significa que puede empaquetar todo el mensaje de ejemplo en un archivo de audio agregando una fluctuación del 0,15 % a 0,02 segundos del archivo de audio. (¡buena suerte escuchando eso!)

Normalmente, este tipo de esteganografía es imposible de decodificar sin el archivo de origen, lo que significa que no puede usarlo ad hoc violando así su segundo punto, pero los archivos de audio tienen la calidad única de que a menudo se guardan en estéreo. Es muy común que el audio de una sola pista se transmita en estéreo, donde ambas pistas son simplemente la misma pista repetida. Pero en este caso, haces que una pista estéreo sea la fuente y la otra el mensaje codificado para que puedas extraer uno del otro. Esto es menos seguro que usar un archivo fuente secreto, ya que alguien que busca un mensaje codificado puede encontrarlo; por lo tanto, deberá asegurarse de que el mensaje esté encriptado antes de codificarlo.

De esta manera, puede enviar un mensaje largo y detallado en cualquier archivo de audio (incluso algunos gritos aleatorios). Siempre que el destinatario tenga el software correcto y la clave de descifrado, puede leerlo.

No estoy seguro exactamente de lo que estás tratando de descartar con tu primera viñeta. ¿Está descartando simplemente mezclar las palabras o agregar un montón de palabras nulas, es decir, no quiere que alguien pueda ver las palabras claras en la canción? ¿O quiere decir que las palabras habladas no se pueden usar de ninguna manera?

Porque hay muchas formas de codificar un mensaje en un texto de portada. Claro, si dices "tomar todas las demás palabras", alguien que esté esperando un mensaje de este tipo podría ver palabras sospechosas en la canción. Recuerdo un código que realmente se usó para pasar un mensaje a un espía capturado una vez (olvidé las circunstancias, tengo que buscarlo) donde la regla era "toma la tercera letra después de cada signo de puntuación". La puntuación no funcionaría bien para un mensaje verbal, por supuesto, pero podría tener una regla como "tomar cada quinta letra" o "tomar la segunda letra después de cada 'e'" o algo así.

Podrías aplicar alguna fórmula al texto. Como tomar el número de letras en cada palabra y ejecutarlas a través de algún tipo de fórmula. O las palabras de una sílaba cuentan como un punto y las palabras de varias sílabas como un guión y usan el código Morse. Etcétera etcétera.

Use un código verdadero en lugar de un cifrado. Haga una lista de palabras clave con anticipación. Por ejemplo, si va a cantar una canción de amor, diga que "amor" significa "sentido horario" y "hermoso" significa "sentido antihorario" y "puesta de sol" significa "pies" y "vestido" significa "cavar" y así sucesivamente. Luego, traduce el mensaje a las palabras clave y completa las palabras que no son palabras clave para hacer una canción coherente.

Si quiere decir que las palabras no se pueden usar de ninguna manera para transmitir el mensaje:

Usted dice que se puede suponer que ambas personas son extremadamente perceptivas. Así que está bien, digamos que la canción cubre 2 octavas. Son 16 notas. Cualquier combinación de 2 notas tiene 256 posibilidades. Deje que 26 de esas combinaciones se asignen a las letras del alfabeto, tal vez algunas más se asignen a otros símbolos que necesita, como espacios y puntuación esencial. Luego traduzca el mensaje en estas notas. Un problema con esto es que una colección aleatoria de notas no sonaría como una canción real y sería imposible cantarla. Pero si solo usa 30 o más de los 256 pares de notas, puede usar los otros 226 libremente como relleno para tratar de "suavizar" la melodía. O podría decir que solo cada cuarta nota cuenta o algo así. No he probado esto y no sé lo práctico que sería.

Del mismo modo, codifique el mensaje en las longitudes de las notas. Digamos que usa binario: una negra es 1, una blanca es 2, una negra es 4, una corchea es 8, una semicorchea es 16. Un silencio marca el final de un grupo de notas que forman un número. Entonces A=1, B=2, C=3, etc. Nuevamente, codificar un mensaje como este generaría una melodía muy discordante, tendrías que poder agregar muchos valores nulos para suavizarlo.

Tome cualquier melodía conocida ("Oda a la Alegría" me vino a la mente por su simplicidad). Cante la melodía con palabras sin sentido, o quizás alterne las instrucciones incorrectas, no son las palabras las que importan.

Trate las notas como binarias: un 0 estará "afinado" y un 1 estará "desafinado".

Tiene el requisito previo de que el codificador tenga una capacidad de canto razonable (de lo contrario, el descifrado puede salir todo 1).

Un efecto secundario desafortunado es que cualquiera que esté familiarizado con el método de descifrado puede leer muchas tonterías involuntarias al pasar por una barra de karaoke.