python的实时音频传送_使用Python使用音频传输数据

本文介绍了如何使用Python进行实时音频传输,包括添加纠错码、调制、D/A和A/D转换、物理传输以及解调过程。通过调制将二进制数据转换为离散信号,利用不同频率的正弦波表示0和1,并通过44kHz采样频率的音频格式进行传输。解调则通过相关函数实现,评估接收信号与理论信号的相似性来判断接收的符号。
摘要由CSDN通过智能技术生成

你需要看看调制技术。正常程序如下:用纠错码使二进制数据冗余

将数据调制成离散信号

D/A转换器

物理介质传输

A/D转换器采样

解调

误差修正

如果你想做的更简单,那么你可以跳过纠错部分,但这会带来风险,你的整个数据在稍微不太理想的环境下被破坏。在

让我们来快速看看这个软件部分。在

添加纠错码

有很多代码可以做到这一点。一个非常简单的方法就是将每个比特重复多次,在纠错阶段取所有接收比特的平均值。在

调制

你有一个1和0的序列,想把它转换成波形。你可以把它们映射到不同的基信号。在一个简单的情况下,这些信号可以只是不同频率的窦性信号,一般来说,它们可以是任何信号,但应该是正交的,以便在统计上独立。

然后您需要指定一个位的发送时间,即符号长度。你发送信号的时间越长,检测它就越容易,但是每次发送的数据就越少。请记住,我们正在创建一个离散信号,然后通过一些D/a转换器(我们的声卡)。在

一个例子

我们要发送模式00110100,0的正弦值为5000赫兹,1的正弦值为10000赫兹。我们选择我们的符号长度为1毫秒,所以它是我们两个基本信号周期的倍数,这改善了形状。

所以我们发送一个频率为5000Hz的正弦信号,持续2ms,然后发送10000Hz的信号,然后发送5000Hz的信号,持续1ms,然后发送5000Hz的信号,持续1ms,最后发送5000Hz的信号,持续2ms。

要为此创建采样点,我们必须选择音频格式。我们使用44 kHz的采样频率。

执行此操作的代码与此类似:for bit in data:

for i in range(0, sampling_frequency * symbol_length):

signal.append(sin(i * sample_length * symbol_frequency(bit)))

采样频率大约为44 kHz,符号长度为1ms,采样长度为1/采样频率,0的采样频率为5000 Hz,1的采样频率为10000 Hz。在

解调

这可以通过相关函数来实现。基本上你假设你有一个符号,然后看看你接收到的信号和这个符号产生的信号有多相似。相似性是接收样本与理论样本乘积的所有样本之和。如果你的频率匹配,整个信号中的符号应该是相等的,所以这是一个很大的值,对于不同的频率,符号在不同的点发生变化,所有的符号都会在0附近结束。对于我们这个简单的例子,你可以用一个假设的1和一个假设的零来计算相关函数,然后用更大的那个作为你接收到的符号。在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值