ffmpeg - 将 WAV 转换为 TETRA 格式

标签 ffmpeg speech-recognition codec sox

我正在尝试将 wav 文件转换为 TETRA 编码文件( https://en.wikipedia.org/wiki/Terrestrial_Trunked_Radio )。 Tetra 被消防员使用,它提供类似 radio 的声音。

我正在尝试使用 (https://www.etsi.org/deliver/etsi_en/300300_300399/30039502/01.03.01_60/) 提供的官方 tetra 编解码器代码,我们可以使用 https://github.com/sq5bpf/install-tetra-codec 提供的脚本轻松编译它.

但是,我无法弄清楚如何使用这些文件将 wav 文件转换为 tetra 编解码器文件。我尝试浏览已编译文件(ccoder、cdecoder、scoder、sdecoder)的文档。

我尝试了以下命令 -

tetra/bin/scoder input.wav serial_file synth_file



这里 serial_file 和 synth_file 是输出文件,并且在 scoder.c 文件中有以下文档:
    INPUT   :   - Description : speech file to be analyzed
                - Format : binary file 16 bit-samples
                  240 samples per frame

serial_file :   - Description : serial stream output file 
            - Format : binary file 16 bit-samples
              each 16 bit-sample represents one encoded bit
              138 (= 1 + 137) bits per frame

synth_file  :   - Description : local synthesis output file 
            - Format : binary file 16 bit-samples

对于大小为 13M 的输入文件,我获得了大小为 8.0M 和 16M 的 serial_file 和 synth_file。但是,我认为由于 wav 文件正在转换为对讲机类型的信号,因此输出文件的大小会小很多。

我想澄清一下:
  • 我使用正确的代码将输入 wav 文件转换为 tetra 格式的输出文件。
  • 你能帮我理解一下,什么是serial_file和synth_file。

  • 谢谢,
    阿什什

    最佳答案

    synth_file是一个内部计算参数,你可以忽略它。
    serial_file是实际编码数据,您可以在解码器中使用它。

    传统上,ETSI 代码使用非常低效的输出格式,而不是位,它们输出这些位的文本或扩展表示。 IE。他们写了一个 16 位的字,而不是一个位,其中所有位都是 0,最后一位有信息。他们这样做是为了与我认为的传输损坏测试工具进行交互。

    所以串行文件的实际长度应该小 16 倍,所以你将 13Mb 转换为 0.5Mb 就可以了。

    关于ffmpeg - 将 WAV 转换为 TETRA 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62364493/

    相关文章:

    python - 使用python ffmpeg转换视频文件时无法保存元数据

    带有 ffmpeg 的 svg 幻灯片

    c# - 官方网站上的 Microsoft Speech Platform Error 404

    java - java语音识别异常

    Azure 语音转文本 cURL 调用失败

    c# - MediaInfo 在 C# 中动态检查 AudioStreams

    audio - 音频 channel 布局

    audio - tinyalsa 时序和 PCM_MMAP 的问题

    apache-flex - Speex 或 nellymoser

    ffmpeg - 将 MJPEG 流播放到 v4l2loopback 设备