Skip to main content

用于生成慢扫描电视传输的 Python 类

项目描述

纯 Python 中的 SSTV 生成器

构建状态

PySSTV 从 PIL 可以打开的任何图像(PNG、JPEG、GIF 等)生成 SSTV 调制的 WAV 文件。例如,这些 WAV 文件可以由连接到短波收音机的任何音频播放器播放。

我的主要动机是在实践中了解 SSTV 的内部结构,因此性能远非最佳。我尝试保持代码可读性,并且只执行不会使代码库复杂化的优化。

命令行使用

$ python -m pysstv -h
usage: __main__.py [-h]
              [--mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120,PD160,PD180,PD240,PD290,Robot8BW,Robot24BW}]
              [--rate RATE] [--bits BITS] [--vox] [--fskid FSKID]
              [--chan CHAN]
              image.png output.wav

Converts an image to an SSTV modulated WAV file.

positional arguments:
  image.png             input image file name
  output.wav            output WAV file name

optional arguments:
  -h, --help            show this help message and exit
  --mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120D160,PD180,PD240,Robot8BW,Robot24BW}
                        image mode (default: Martin M1)
  --rate RATE           sampling rate (default: 48000)
  --bits BITS           bits per sample (default: 16)
  --vox                 add VOX tones at the beginning
  --fskid FSKID         add FSKID at the end
  --chan CHAN           number of channels (default: mono)

Python 接口

模块中的SSTVsstv实现了与 SSTV 相关的基本功能,以及其他模块的类,例如grayscalecolor扩展它。大多数实例实现以下方法:

  • __init__将 PIL 图像、每秒样本数和每个样本的位数作为参数,但不执行任何硬计算
  • gen_freq_bits生成描述正弦波段的元组,频率以赫兹为单位,持续时间以毫秒为单位
  • gen_values生成介于-1和+1之间的样本,根据构建时给出的每秒样本数进行采样
  • gen_samples生成离散样本,根据构建期间给出的每个样本值的比特数执行量化
  • write_wav将整个图像写入 Microsoft WAV 文件

以上方法都建立在上面的方法之上,例如write_wav 调用gen_samples,而后者调用gen_values,所以通常只调用第一个和最后一个,也许最后两个应该直接调用,为了完整起见,这里只是列出了其他的。让流程更容易理解。

执照

整个项目在 MIT 许可下可用。

有用的链接

依赖项

  • Python 3.5 或更高版本
  • Python 映像库(Debian/Ubuntu 软件包python-imaging:)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

PySSTV-0.5.4.tar.gz (222.3 kB 查看哈希

已上传 source