通过激光进行 Python 音频传输

标签 python audio signal-processing frequency

我目前正在从事一个相对容易的项目,到目前为止。基础项目是使用音频转换通过激光传输数据/消息。 概括一下流程目前是这样的

  1. 用户输入消息
  2. 消息变成二进制
  3. 对于二进制消息中的每个 1 和 0,它都会播放相应的音调来发出信号,在我的例子中,250hz 表示 1,450hz 表示 0。
  4. 传出的音调通过立体声电缆发送到安装在激光器上的音频变压器
  5. 太阳能电池板充当麦克风并将传入的“声音”记录为文件
  6. 他们播放文件并读出音调并尝试将每个 250 和 450 赫兹与 1 或 0 相匹配(这是我的问题所在)。

直到声音的实际处理没问题,我目前的问题如下。

我将每个音调播放 x 次,在接收端记录 y 次,将 y 次剪切 采样 多次,然后逐个样本分析,然后记录每个频率。这是低效和不准确的。无论我何时播放提示音,我都遇到过很多问题,因为它经常会听到两次提示音或根本听不到提示音​​,这完全会影响整个消息。
我试图将它的采样率与每个音调播放的时间相匹配,但除非相应地对齐它是行不通的。我只对“测试”和“嗨”等消息进行了几次成功测试。我已经研究过 bpsk 和 fsk,但我觉得我已经在做类似的事情了,但我的接收端不好,无法破译这一切。

这一切都是用 Python 编写的,如果您能提供任何提示、建议或可能的实现,我将不胜感激。此外,对于音调发射,我正在使用 pyaudiere,对于录音,我正在使用 pyaudio

谢谢!

-史蒂夫

最佳答案

这听起来像是硬件问题。我很确定它 FSK 的工作。大多数现代 FSK 型系统使用 PLL(锁相环芯片)进行实际检测。也可使用频率-电压或频率-电流电路。

我在许多业余爱好者书籍、数据表和网站上看到过实用电路。这里有一些:

Circuit for demodulating an FSK signal

PLL Tutorial

我希望这不仅仅是您的又一次冒险——祝您好运!

关于通过激光进行 Python 音频传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606111/

相关文章:

Python 将 N 维体积划分为统一的子体积

python - 替换非零的numpy数组元素

python - pytorch 为从 numpy 创建张量做了什么

javascript - 跟踪 HTML5 音频元素播放了多少次?

c++ - 在 C++ 类中实现 TPCircularBuffer

python - 结合/拼接 pandas DataFrames 与条件

python-3.x - 如何在Python的scipy信号卷积中添加比率参数?

iphone - 调音台主机音频蓝牙

matlab - 格林函数的傅里叶变换 - 两个信号之间的差异几乎相同

python - 如何在 Scipy 中定义具有时间延迟的 LTI 系统?