Aprende a crear un archivo de audio SSTV con diferentes formatos usando Python en Ubuntu 18.04.

Cómo crear archivos de audio de transmisiones de televisión de escaneo lento (SSTV) con Python en Ubuntu 18.04

Los modos anteriores de transmisión SSTV se mostraban en monitores largos y persistentes con radar CRT. La duración de la transmisión de cada cuadro de imagen tomó de 7,2 a 8 segundos, y cuando se recibió la última línea, la primera todavía estaba visible. Era posible ver la imagen completa en una habitación oscura.

El formato más conocido de este tipo de transmisión es el sistema Martin. El sistema Martin nos permite trabajar con cuatro modos / velocidades diferentes. La versión más popular es la Martin M1 con 256 líneas por cuadro en dos minutos. Otros modos del sistema Martin tienen la mitad de la línea o la mitad de la resolución horizontal del M1 de mejor calidad. El modo M4 tiene la calidad más baja y 128 líneas. Los modos Martin M1 y M2 se utilizan a menudo entre estaciones europeas:

Mode name Tiempo de transferencia Resolución Secuencia de colores Línea de exploración (ms) Velocidad (1pm)
Sync G B R
Martin M1 114 s 320 X 256 G—B—R. 4.862 146.432 146.432 146.432 134.394753
Martin M2 58 s 160 X 256 G—B—R 4.862 73.216 73.216 73.216 264.552598
Martin M3 57 s 320 X 128 G—B—R. 4.862 146.432 146.432 146.432 134.394753
Martin M4 29 s 160 X 128 G—B—R. 4.862 73.216 73.216 73.216 264.552598

En este artículo, te explicaremos brevemente cómo puede convertir una imagen en un archivo de audio SSTV usando la biblioteca pySSTV en Python en su escritorio Ubuntu 18.04.

Requisitos de instalación

Para trabajar con la biblioteca pySSTV, deberá instalar la biblioteca python-pil en su sistema. La biblioteca de imágenes de Python (PIL) agrega capacidades de procesamiento de imágenes a su intérprete de Python. Esta biblioteca admite muchos formatos de archivo y proporciona potentes capacidades de procesamiento de imágenes y gráficos.

Puede instalarlo en su sistema con el siguiente comando en la terminal:

sudo apt-get install python-pil

También necesitarás los seis módulos de Python instalados. Six proporciona utilidades simples para ajustar las diferencias entre Python 2 y Python 3. Está diseñado para admitir bases de código que funcionan tanto en Python 2 como en 3 sin modificaciones. seis consta de un solo archivo de Python, por lo que es fácil de copiar en un proyecto. Puede instalarlo con PIP, sin embargo, si no tiene instalado pip, instálelo primero con:

sudo apt-get install python-pip

Y después de tener pip disponible, instálalo con:

pip install six

Ahora que tiene las bibliotecas requeridas por pySSTV, podrá descargarlas y usarlas desde su terminal.

1. Descarga pySSTV

Descargue el proyecto pySSTV con Git usando el siguiente comando (si no tiene git instalado, instálelo con sudo apt-get install git):

git clone https://github.com/dnet/pySSTV.git

PySSTV genera archivos WAV modulados por SSTV a partir de cualquier imagen que PIL pueda abrir (PNG, JPEG, GIF y muchas otras). Estos archivos WAV se pueden reproducir con cualquier reproductor de audio conectado a una radio de onda corta, por ejemplo. La principal motivación del desarrollador fue comprender cómo funcionan las partes internas de SSTV en la práctica, por lo que el rendimiento está lejos de ser óptimo en esta biblioteca, pero los resultados son bastante funcionales. El código es fácilmente legible y solo realizó optimizaciones que no habrían complicado la base del código.

Para obtener más información sobre esta biblioteca, visite el repositorio oficial en Github aquí.

2. Creación del archivo de audio SSTV a partir de una imagen

En el repositorio clonado, encontrará el archivo pysstv.py que es básicamente el código de la herramienta. Puede ejecutar esta herramienta para generar un archivo de audio SSTV a partir de una imagen que puede decodificar con herramientas especiales que admiten este tipo de datos. El script admite los siguientes formatos:

  • MartinM1
  • MartinM2
  • ScottieS1
  • ScottieS2
  • Robot36
  • PasokonP3
  • PasokonP5
  • PasokonP7
  • PD90
  • PD120
  • PD160
  • PD180
  • PD240
  • Robot8BW
  • Robot24BW

El modo se puede especificar con la --modebandera. El comando espera 2 argumentos posicionales (ruta de entrada de la imagen a convertir) en el orden respectivo. Además admite las siguientes opciones:

  • --help: muestra este mensaje de ayuda y sal
  • --mode: {MartinM1, MartinM2, ScottieS1, ScottieS2, Robot36, PasokonP3, PasokonP5, PasokonP7, PD90, PD120D160, PD180, PD240, Robot8BW, Robot24BW}, el modo de imagen predeterminado es Martin M1
  • --rate: Frecuencia de muestreo RATE (predeterminado: 48000)
  • --bits: BITS bits por muestra (predeterminado: 16)
  • --vox: agrega tonos VOX al principio
  • --fskid: FSKID agrega FSKID al final
  • --chan: CHAN número de canales (predeterminado: mono)

La forma más sencilla de generar el archivo de audio a partir de una imagen es con el siguiente comando, donde pysstv corresponde a la ruta del script. Usaremos el modo MartinM1, pero puede usar el formato que desee:

python -m pysstv --mode MartinM1 ./path-to/input-picture.jpg ./output-audio.wav

Después de ejecutar el comando, generará el output-audio.wavarchivo que contiene el audio con frecuencias del formato especificado. La clase en el módulo implementa la funcionalidad básica relacionada con SSTV y las clases de otros módulos como y amplían este. La mayoría de las instancias implementan los siguientes métodos: SSTV  sstv  grayscale  color 

  • __init__ toma una imagen PIL, las muestras por segundo y los bits por muestra como parámetro, pero no realiza cálculos duros
  • gen_freq_bits genera tuplas que describen un segmento de onda sinusoidal con frecuencia en Hz y duración en ms
  • gen_values genera muestras entre -1 y +1, realizando un muestreo de acuerdo con el valor de muestras por segundo dado durante la construcción
  • gen_samples genera muestras discretas, realizando la cuantificación de acuerdo con los bits por valor de muestra dado durante la construcción
  • write_wav escribe la imagen completa en un archivo WAV de Microsoft

Todos los métodos anteriores se basan en los anteriores, por ejemplo , las llamadas , mientras que las últimas llamadas , por lo general, solo el primero y el último, tal vez los dos últimos deben llamarse directamente, los otros solo se enumeran aquí para completar y para haz que el flujo sea más fácil de entender. write_wav  gen_samples gen_values

You can learn how to decode this audio file into an image again in Ubuntu 18.04 as well if you read this tutorial.

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores