Las voces del GPS

Me pasaron una voz de Torrent para el TomTom 5 y cuando fui a probarla no me funcionó. Entonces me puse a buscar a ver por qué no funcionaba y pensé, ¿y si miro el archivo por dentro?. Aquí está el resultado de la investigación:

Análisis

Comparando varios archivos de voces se ve que hay una cabecera que es siempre la misma. Esta cabecera es:

00 00 00 3b 00 00 00 f4

A continuación cada grupo de cuatro bytes parece indicar la posición del
comienzo de un nuevo archivo Ogg Vorbis.

00000000 00 00 00 3b 00 00 00 f4 00 00 25 3c 00 00 4e 78 |…;……%<..Nx| 00000010 00 00 70 ec 00 00 91 08 00 00 be f0 00 00 e7 a0 |..p.............|

En esas direcciones tenemos:

00002530 24 af a6 f1 db 37 ab d2 aa 06 03 0e 01 00 0a 4e |$….7………N|
00002540 00 00 00 01 00 00 00 08 00 00 29 2b 4f 67 67 53 |……….)+OggS|
00002550 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 |…………….|
00002560 00 00 96 fc 0f 56 01 1e 01 76 6f 72 62 69 73 00 |…..V…vorbis.|
00002570 00 00 00 01 22 56 00 00 00 00 00 00 1e 9d 00 00 |….»V……….|
00002580 00 00 00 00 a9 01 4f 67 67 53 00 00 00 00 00 00 |……OggS……|

Indica realmente la posición en la línea en hex anterior a partir de la cual empieza el nuevo archivo. Es decir, si en las líneas anteriores podemos ver que nos ha indicado 00 00 25 3c y ahí tenemos 0e, en la línea siguiente debajo del 0e, queda el último byte del archivo anterior y a continuación comienza el siguiente Ogg Vorbis. El nuevo archivo empieza en la posición 00 00 25 3c + 0x10.

Veamos si se cumple con el siguiente también. Tenemos 00 00 4e 78. En esa
posición hay el siguiente fragmento:

00004e70 4a dd 45 7e 21 00 0e 00 01 00 08 9c 00 00 00 01 |J.E~!………..|
00004e80 00 00 00 08 00 00 22 62 4f 67 67 53 00 02 00 00 |……»bOggS….|

En la posición 00 00 4e 78 tenemos el byte 01. Debajo de éste se encuentra el 4f 67 67 que es el `Ogg’. De nuevo es 00 00 4e 78 + 0x10. ¡Se cumple!

Como comprobación adicional veamos el último indicado en el fragmento de cabecera que hemos tomado para la demostración. Tenemos 00 00 e7 a0. Si nos vamos a esa posición encontramos:

0000e7a0 01 00 0b 34 00 00 00 01 00 00 00 08 00 00 2c c4 |…4……….,.|
0000e7b0 4f 67 67 53 00 02 00 00 00 00 00 00 00 00 01 00 |OggS…………|

Con lo que tenemos de nuevo 00 00 e7 a0 + 0x10 = e7 b0.

Los archivos Ogg Vorbis extraídos tienen el siguiente formato:

$ ogginfo voces10.ogg
Processing file «voces10.ogg»…

New logical stream (#1, serial: 00000001): type vorbis
Vorbis headers parsed for stream 1, information follows…
Version: 0
Vendor: Xiph.Org libVorbis I 20020717 (1.0)
Channels: 1
Rate: 22050

Nominal bitrate: 40,222000 kb/s
Upper bitrate not set
Lower bitrate not set
Vorbis stream 1:
Total data length: 5871 bytes
Playback length: 0m:00.811s
Average bitrate: 57,876629 kb/s
Logical stream 1 ended

La última palabra de 32 bits que indica dónde termina el último Ogg, lo
cual coincide con la posición del último byte del archivo, se encuentra
a partir de la posición 0000 00f0.

Después de la posición 0000 00f3 del archivo hay cuatro palabras de 32 bits
más antes del primer Ogg. Estas cuatro palabras en marta son:

0000 00f4 -> 0100 0911
0000 00f8 -> 0000 0001
0000 00fc -> 0000 0008
0000 0100 -> 0000 2438

Y en el caso de raul:

0000 00f4 -> 0100 0a82
0000 00f8 -> 0000 0001
0000 00fc -> 0000 0008
0000 0100 -> 0000 29f9

Ni idea de para qué se usan. ¿Será una especie de suma de comprobación?

Aplicación

En base a estas averiguaciones he programado dos pequeñas aplicaciones en python. Una de ella extrae los sonidos de un archivo existente, la otra crea un archivo de sonidos a partir de una serie de Ogg que contengan las nuevas voces grabadas. Adicionalmente un pequeño guión en bash codifica en Ogg archivos wav en el formato usado por TomTom5. A continuación los enlaces a cada una de las aplicaciones:

Archivado en:Sin categoría

28 comentarios en “Las voces del GPS”

  • DraXus dijo:

    Joe, tas hecho un crack (o un enfermo)! Hay que estar muy aburrido para mirarse el código hexadecimal xDD

    Bueno seguro que a alguien le sirve. Gracias!

  • Arkangel dijo:

    ¡Artitta! No se si alguna vez lo usaré, pero el hecho de poder hacerlo ya me emociona (enlavin, si te curras el archivito, que rule, ¿no? Podemos hacer un proyecto colaborativo de esos…)

    Yo tenía pendiente escribir un post sobre Marta y las voces en mi cabeza, pero ya después de esto no se si soy digno…

  • bliter dijo:

    muy buen trabajo juanete. como te lo curras flipado me he kedado.

    abur

  • enlavin dijo:

    ¿La última vez que cogiste un editor hexadecimal no te ventilaste la FAT de un disco duro? :P

    Ahora ya puedo ponerle la voz de Homer :D . Buen trabajo tio :)

  • Misósofos dijo:

    Miedo me da de pensar que una mente privilegiada como la de Nauj pudiera pasarse al lado oscuro…

    Imagináos: Semáforos encendiéndose y apagándose de manera aleatoria, cajeros del banco escupiendo dinero, el windows 2089 filtrado en su versión final…

  • sofacolchon dijo:

    Perdono, pero como no soy informático no me he enterado de casi nada. ¿Al final funciona la voz de Torrente en el tom tom?. Si es así ¿que es lo que hay que instalar y donde?. Yo tengo una Acer NC35 con el tom tom.

    Salu2.
    http://blogdeldescanso.blogspot.com/

  • dtorrent dijo:

    Hola a todos. como se utiliza el python para hacer funcionar «extraerSonidos» y «epaquetarsonidos»?

  • Sniper dijo:

    Donde puedo usar esos programas para editar los chk?

    Gracias

  • Sniper dijo:

    Donde puedo usar esos programas para editar los chk?

    Gracias

  • Miguel Angel dijo:

    Hola de nuevo. Efectivamente tenia un problema en el path. El script funciona perfectamente. El problema es que el fichero de voces que descarge esta mal y los ficheros ogg resultantes son vacios o incluso faltan algunos. Los tamaños de cada ogg son enormes e incluso alguno negativo. En fin que se le va a hacer.
    Un saludo y muy buen trabajo.

  • Gemy dijo:

    perdón, es que el chino no lo comprendo. por mas que leo lo que poneis no me entero de nada, que pijo son esos cuadrados? Es un idioma nuevo? me he quedado obsoleta?

  • nauj27 dijo:

    Uys, perdona gemy, es que a veces se me va,.. se me va !

  • Saibur dijo:

    Me podrias decir que tengo que hacer para que el tomtom me advierta con voz de los radares. Hasta ahora solo me aparecen en la pantalla y no puedo estar todo el rato pendiente de ella.

  • Manuel dijo:

    Hola.

    He visto tu página en internet para editar los archivos de voz del tomtom 5 y me parece muy interesante.

    Necesito hacerte un par de preguntas.

    La primera. ¿Se puede, con los programitas que ofreces, incluir voces propias en los archivos con extensión .chk propios de tomtom?.

    La segunda. Sé programar en algunos lenguajes, pero no he oido nunca lo de python y bash. ¿Puedes decirme de que van o como conseguir los programas o las aplicaciones para poder utilizar los programitas que tú has creado?

    Gracias anticipadas.

    Manuel.

  • nauj27 dijo:

    Hola Manuel,

    Sí se puede, de hecho son para eso. Puedes cambiarlos todos o solo el que quieras. El que extrae tiene puesto un nombre fijo dentro del código pero puedes cambiarlo por el nombre de cualquier otro archivo .chk de tu tomtom.

    Respecto a la segunda, puedes encontrar mucha información tanto para aprender como para descargarlos en:

    http://www.python.org
    http://www.cygwin.com
    http://www.gnu.org/software/bash/
    […]

  • Miguel Angel dijo:

    Hola, he ejecutado el script de extraccion, procesa los 59 ogg, pero no escribe a fichero ninguno. No faltaría escribir el resultado de la estracion de cada fichero.

    Un saludo y muy buen trabajo.

  • nauj27 dijo:

    Hola Miguel Angel, deberían de escribirse con el nombre 0.ogg, 1.ogg… suponiendo que ‘dd’ está en el PATH y que tienes permisos de escritura donde lo ejecutas :-?

  • elllecita dijo:

    Hola a todos,
    Necesito tu ayuda nauj… o Juan?
    Soy economista y no entiendo un pijo de informatica, pero tengo una pda y putineo en ella, poniendole aplicaciones, juegos y le cambio la voz al tom tom.
    Buscando en algunos foros, he conseguido grabar mi propia voz, añadiendole frases divertidas y algo picantes. Tengo las grabaciones en ogg y me faltaria unirlas en chk.
    Cual de las aplicaciones que nombras debo utilizar y como?
    «hablame sensillo» pleaseeeee
    Graciasssssss

  • nauj27 dijo:

    Hola ellecita, la que debes usar para crear el archivo chk es empaquetarSonidos.py teniendo archivos con nombres 1.ogg hasta 59.ogg.

    Para saber qué grabación debe ir con qué nombre o número puedes usar extraerSonidos.py con un chk original y oir lo que dice cada uno de los ogg extraidos.

  • elllecita dijo:

    Hola de nuevo,
    Ya tengo los archivos grabados con el nombre correcto, en ogg y también he descargado la aplicación empaquetarSonidos.py, pero con que programa funciona? no se como abrirlo…
    Gracias.

  • nauj27 dijo:

    Para hacerlo funcionar necesitas python y cat. Si usas GNU/Linux lo más seguro es que lo tengas instalado. Si usas Windows puedes usar cygwin [1] asegurándote de marcar python en la instalación.

    Una vez que lo tengas abres un terminal y teniéndo todo en el mismo directorio lo ejecutas.

    [1] http://www.cygwin.com

  • bcrichadicto dijo:

    perdonadme, se que la intencion es buena y que quereis ayudar, pero esto ms parece un foro de frikis y de mucho cuidado, no se si os habeis enterado, pero no todos entendemos lo que decis, asi que no se trata de demostrar que tant sabeis, sino hacer que los demas lo sepan, porque en todo caso es mejor no poner nada, porque lo unico que conseguis es marear a la gente, si la intencion realmente es buena, deberian redactar un tutorial de como utilizar los programas paso a paso y no alardear de conocimientos informaticos.

  • hhimawarii dijo:

    hay alguien?

  • hhimawarii dijo:

    No he conseguido agrupar los archivos ogg en chk, siguiendo vuestras explicaciones entiendo que con xp debo instalar el cygwin, para utlizar el empaquetador de archivos. Lo he instalado desde internet, en una carpeta nueva con el mismo nombre

  • hhimawarii dijo:

    Luego cuando me pregunta: Default text file type: unix / binary o dos/text; supongo que es binary, es asi?

  • hhimawarii dijo:

    lo de python donde se le marca? gracias

  • nico dijo:

    che una mas facil es usar el editor de sonido soundforge…lo puene descargar en cualquier lado

  • Jessica dijo:

    A sculpture supposedly created by in is reveals her <a href=» http://www.fixascruptos.com «>fixa scruptos best</a> moment, what’s hot about

    actually dkeejghtdy the work of a counterfeiter