Trama de silencio

Programas y utilidades de interes.
Responder
paniscan
Mensajes: 16
Registrado: 07 Feb 2015 19:29
Agradecido : 2 veces
Agradecimiento recibido: 8 veces

Trama de silencio

Mensaje por paniscan »

Buenos días,

Estoy intentando encontrar una posible trama de silencio en el sistema NXDN, al igual que existe en DMR, con resultados negativos hasta el momento, he publicado la pregunta en radioreferencie, pero tambien lo publico aqui por si alguien me pudiera añadir luz a mi duda, y sobre todo, es español, el ingles es mi asignatura pendiente.

"He buscado entre varias muestras que tengo disponibles y no he sido capaz de encontrar el marco de silencio mencionado en el manual, ni ningún otro marco repetido que pueda considerar como marco de silencio."

"He buscado en el código mbelib y he encontrado que dentro de este código también se definen una trama de silencio, una trama de borrado y una trama de tono."

Si lo que creo deducir es correcto, el vocoder interpretaría una trama como silencio, sólo con mirar ciertos bits, y si estoy en lo cierto, cualquier valor de la trama de sonido, poniendo a 1 los bits adecuados, el vocoder lo interpretaría como silencio. ¿Estoy en lo cierto o muy equivocado?"

Si estoy en lo cierto, buscar una supuesta trama de sonido con un formato específico sería un callejón sin salida.

He intentado encontrar información sobre el vocoder AMBE y no lo he conseguido. ¿Alguien podría indicarme dónde descargarla o enviarla? También información sobre el vocoder AMBE y la librería mbelib."

"Espero haberme explicado correctamente y que el traductor haga bien su trabajo. Mi inglés es muy malo y he recurrido a ChatGPT.

Muchas gracias".


Pues lo dicho, necesitaría información sobre el vocoder AMBE y si fuese posible, respuesta a la pregunta que he realizado, o por lo menos, saber si la duda es razonable o no.

Gracias por anticipado a todos.
Kilo
Mensajes: 660
Registrado: 11 Ago 2015 20:03
Agradecido : 784 veces
Agradecimiento recibido: 79 veces

Trama de silencio

Mensaje por Kilo »

paniscan escribió: 10 Feb 2024 12:02 Buenos días,

Estoy intentando encontrar una posible trama de silencio en el sistema NXDN, al igual que existe en DMR, con resultados negativos hasta el momento, he publicado la pregunta en radioreferencie, pero tambien lo publico aqui por si alguien me pudiera añadir luz a mi duda, y sobre todo, es español, el ingles es mi asignatura pendiente.

"He buscado entre varias muestras que tengo disponibles y no he sido capaz de encontrar el marco de silencio mencionado en el manual, ni ningún otro marco repetido que pueda considerar como marco de silencio."

"He buscado en el código mbelib y he encontrado que dentro de este código también se definen una trama de silencio, una trama de borrado y una trama de tono."

Si lo que creo deducir es correcto, el vocoder interpretaría una trama como silencio, sólo con mirar ciertos bits, y si estoy en lo cierto, cualquier valor de la trama de sonido, poniendo a 1 los bits adecuados, el vocoder lo interpretaría como silencio. ¿Estoy en lo cierto o muy equivocado?"

Si estoy en lo cierto, buscar una supuesta trama de sonido con un formato específico sería un callejón sin salida.

He intentado encontrar información sobre el vocoder AMBE y no lo he conseguido. ¿Alguien podría indicarme dónde descargarla o enviarla? También información sobre el vocoder AMBE y la librería mbelib."

"Espero haberme explicado correctamente y que el traductor haga bien su trabajo. Mi inglés es muy malo y he recurrido a ChatGPT.

Muchas gracias".


Pues lo dicho, necesitaría información sobre el vocoder AMBE y si fuese posible, respuesta a la pregunta que he realizado, o por lo menos, saber si la duda es razonable o no.

Gracias por anticipado a todos.
Entiendo que la finalidad sería un sistema autónomo de grabación o similar?

Saludos, 73
paniscan
Mensajes: 16
Registrado: 07 Feb 2015 19:29
Agradecido : 2 veces
Agradecimiento recibido: 8 veces

Trama de silencio

Mensaje por paniscan »

Kilo escribió: 10 Feb 2024 14:09
paniscan escribió: 10 Feb 2024 12:02 Buenos días,

Estoy intentando encontrar una posible trama de silencio en el sistema NXDN, al igual que existe en DMR, con resultados negativos hasta el momento, he publicado la pregunta en radioreferencie, pero tambien lo publico aqui por si alguien me pudiera añadir luz a mi duda, y sobre todo, es español, el ingles es mi asignatura pendiente.

"He buscado entre varias muestras que tengo disponibles y no he sido capaz de encontrar el marco de silencio mencionado en el manual, ni ningún otro marco repetido que pueda considerar como marco de silencio."

"He buscado en el código mbelib y he encontrado que dentro de este código también se definen una trama de silencio, una trama de borrado y una trama de tono."

Si lo que creo deducir es correcto, el vocoder interpretaría una trama como silencio, sólo con mirar ciertos bits, y si estoy en lo cierto, cualquier valor de la trama de sonido, poniendo a 1 los bits adecuados, el vocoder lo interpretaría como silencio. ¿Estoy en lo cierto o muy equivocado?"

Si estoy en lo cierto, buscar una supuesta trama de sonido con un formato específico sería un callejón sin salida.

He intentado encontrar información sobre el vocoder AMBE y no lo he conseguido. ¿Alguien podría indicarme dónde descargarla o enviarla? También información sobre el vocoder AMBE y la librería mbelib."

"Espero haberme explicado correctamente y que el traductor haga bien su trabajo. Mi inglés es muy malo y he recurrido a ChatGPT.

Muchas gracias".


Pues lo dicho, necesitaría información sobre el vocoder AMBE y si fuese posible, respuesta a la pregunta que he realizado, o por lo menos, saber si la duda es razonable o no.

Gracias por anticipado a todos.
Entiendo que la finalidad sería un sistema autónomo de grabación o similar?

Saludos, 73
En principio, solo se trata de saber si, al igual que en DMR, existe una posible trama de sonido.

Saludos
Avatar de Usuario
ANgazu
Moderador Global
Moderador Global
Mensajes: 2099
Registrado: 05 Nov 2014 21:02
Agradecido : 121 veces
Agradecimiento recibido: 1163 veces

Trama de silencio

Mensaje por ANgazu »

Hola Paniscan.
Ya hace tiempo que no veo los codec, pero he repasado alguna cosilla de los ambe.
Como sabes, hay varias versiones pero tiene varias cosas en comun.
En el caso que mencionas, supongo que te refieres a las tramas de ruido confortable.


ambe_classify_frame(const uint8_t *frame)
{
switch (frame[0] & 0xfc) {
case 0xfc:
return AMBE_TONE;

case 0xf8:
return AMBE_SILENCE;

default:
return AMBE_SPEECH;
};
}

Este es el código de una version con tramss de 10 bytes. El indicador de silencio es un bit en el primer byte. Si esta a 1 es silencio y si esta a 0 es audio. (no consideramos otros bits de control)
En el caso de audio, los 9 bytes siguientes se pocesan como sonido.
En caso de silencio, se procesan como ruido confortable para que el oyente oiga ruido y no piense que el sistema se ha colgado, cosa que sucederia si no se oyese nada.
La cantidad de bytes por trama depende de la velocidad y tipo de modulacion y de la implementación del codec,pero básicamante asi es como funciona.

Saludos.
"Seguiremos adelante......"
"8472"
paniscan
Mensajes: 16
Registrado: 07 Feb 2015 19:29
Agradecido : 2 veces
Agradecimiento recibido: 8 veces

Trama de silencio

Mensaje por paniscan »

ANgazu escribió: 16 Feb 2024 14:50 Hola Paniscan.
Ya hace tiempo que no veo los codec, pero he repasado alguna cosilla de los ambe.
Como sabes, hay varias versiones pero tiene varias cosas en comun.
En el caso que mencionas, supongo que te refieres a las tramas de ruido confortable.


ambe_classify_frame(const uint8_t *frame)
{
switch (frame[0] & 0xfc) {
case 0xfc:
return AMBE_TONE;

case 0xf8:
return AMBE_SILENCE;

default:
return AMBE_SPEECH;
};
}

Este es el código de una version con tramss de 10 bytes. El indicador de silencio es un bit en el primer byte. Si esta a 1 es silencio y si esta a 0 es audio. (no consideramos otros bits de control)
En el caso de audio, los 9 bytes siguientes se pocesan como sonido.
En caso de silencio, se procesan como ruido confortable para que el oyente oiga ruido y no piense que el sistema se ha colgado, cosa que sucederia si no se oyese nada.
La cantidad de bytes por trama depende de la velocidad y tipo de modulacion y de la implementación del codec,pero básicamante asi es como funciona.

Saludos.
Efectivamente, de hecho, según el código de la librería mbelib que uso para compilar DSD-FME, veo que cualquier trama que empiece por F, es una de estos tres tipos de tramas, y el tipo de trama queda definido por los bit 37, 38 y 39.

Trama de borrado (erasure frame).
La trama de borrado viene determinada por el estado de los siguientes bits:
1111 … 000 [0][1][2][3]]…….[37][38][39]
1111 … 001 [0][1][2][3]]…….[37][38][39]
1111 … 010 [0][1][2][3]]…….[37][38][39]
1111 … 011 [0][1][2][3]]…….[37][38][39]

Trama de silencio (silence frame)
La trama de silencio viene determinada por el estado de los siguientes bits:
1111…..100 [0][1][2][3]]…….[37][38][39]
1111…..101 [0][1][2][3]]…….[37][38][39]

Trama de tono (tone frame)
La trama de tono viene determinada por el estado de los siguientes bits:
1111 … 110 [0][1][2][3]]…….[37][38][39]
1111 … 111 [0][1][2][3]]…….[37][38][39]

todo lo anterior deducido del siguiente código del fichero ambe3600x2450.c, por si alguien lo quiere echar un visitado.

// decode fundamental frequency w0 from b0
b0 = 0;
b0 |= ambe_d[0]<<6;
b0 |= ambe_d[1]<<5;
b0 |= ambe_d[2]<<4;
b0 |= ambe_d[3]<<3;
b0 |= ambe_d[37]<<2;
b0 |= ambe_d[38]<<1;
b0 |= ambe_d[39];
if ((b0 >= 120) && (b0 <= 123)) // if w0 bits are 1111000, 1111001, 1111010 or 1111011, frame is erasure
{
#ifdef AMBE_DEBUG
fprintf (stderr,"Erasure Frame\n");
#endif
return (2);
}
else if ((b0 == 124) || (b0 == 125)) // if w0 bits are 1111100 or 1111101, frame is silence
{
#ifdef AMBE_DEBUG
fprintf (stderr,"Silence Frame\n");
#endif
silence = 1;
cur_mp->w0 = ((float) 2 * M_PI) / (float) 32;
f0 = (float) 1 / (float) 32;
L = 14;
cur_mp->L = 14;
for (l = 1; l <= L; l++)
{
cur_mp->Vl[l] = 0;
}
}
else if ((b0 == 126) || (b0 == 127)) // if w0 bits are 1111110 or 1111111, frame is tone
{
#ifdef AMBE_DEBUG
fprintf (stderr,"Tone Frame\n");
#endif
return (3);
}


La pregunta es porque no tengo claro que en determinados sistemas, se transmita una trama de silencio o alguna trama especial, y ser usada para una posible comparación. Según he leído, este tipo de tramas se insertan para poder construir la totalidad de las supertramas, cuando no hay señal de audio o bien la transmisión acaba, rellenar las tramas faltantes en la supertramas., pero yo nos la veo presentes, por lo que creo, que si son necesarias para completar las supertramas, se realiza de otra manera.

En el código del vocoder, esta prevista la variable simbólica AMBE_DEBUG, si se define esta variable, el vocoder empieza a mostrar mucha información por pantalla, mas que mucha, muchisima.

Seria bueno tener mas información de este tipo de codec, para entender bien su funcionamiento, deducirlo desde el código, para mi, lo veo tarea imposible para mi.

Saludos
Santiago
Responder