python中的d-star库和实用程序
pydv的Python项目详细描述
PYDV
用于试验d-star的python代码集合,以及提议的vocoder extension允许使用d-star的开源Codec 2。
提供python接口来管理dextra和dplus连接(反射程序使用的协议),将网络数据转换为d-star流(头和帧),反之亦然,还可以使用mbelib(仅解码)和codec2对语音数据进行编码和解码,并使用ambed服务器(我的xlxd fork中包含的版本)进行转码。
安装以下可执行文件:
dv-recorder
,它连接到反射器并在.dvtool文件中记录流量dv-player
,它将.dvtool文件回放到反射器dv-encoder
,它使用codec 2声码器将.wav fle转换为.dvtool文件dv-decoder
,它使用任何声码器将.dvtool文件转换为.wavdv-transcoder
,它连接到AMBED服务器,并使用AMBE声码器将.dvtool文件转换为使用CODEC 2声码器的.dvtool文件,反之亦然
D-Star声码器扩展
我建议使用报头的“flag 3”字节来标记语音帧中的声码器类型,如下所示(根据D-STAR specification第4页第2.1.1节):
Bit | Meaning | Function |
---|---|---|
^{ | Vocoder | ^{ ^{ |
^{ | Mode | ^{ ^{ |
^{ | Undefined | Use for future expansion |
帧中可用于语音数据的总空间为72位。对于编解码器2 3200,没有太多的空间留给fec,所以这个选项应该只用于互联网上的通信。另一方面,使用codec2240,我们可以使用(23,12)golay码的两个应用程序来保护语音数据的前24位。
注意:早期版本的扩展使用了一个以上的位来控制fec的存在。后来决定,当帧中有可用空间时,始终包括fec。
声码器扩展与所有当前d-star硬件(中继器、热点等)和软件(中继器控制器、反射器等)兼容,当然,假定语音数据为ambe格式并使用相应芯片进行处理的收发器除外。
d星反射器,像xlxd,可以用来转码和桥接这两种格式。尽管声码器扩展的实现可以使用与ambe-only客户机相同的反射连接,但应避免使用,以避免用户混淆并建立互操作性。
在我的xlxd fork分支的vocoder-extension
中实现的解决方案在另一个端口(30201而不是30001)上使用另一个dextra侦听器。新端口将由使用“ORF”前缀(开放反射器)的反射器使用。连接到orf反射器的任何客户端都将接收用编解码器2编码的流。所有其他d-star协议处理程序仍将发送用ambe编码的数据。注意,协议/端口仅影响反射层传输的数据。流声码器被所有协议处理程序识别,因此客户端仍然可以使用任何端口上的任何声码器传输数据。这背后的基本原理是,右旋糖酐链接可能被中继器或其他反射器使用,因此不可能真正知道他们的客户支持什么。所以,当中继器连接到X射线荧光反射器时,一切都不会改变,但当连接到ORF反射器时,一切都会改变。
开源的声码器,允许家庭酿造收发器使用Rasbperry Pi,一个MMDVM modem(甚至one constructed with through-hole components)和一个旧收音机。因此,可以使用d-star热点作为收发机,假设一种连接麦克风和扬声器的方法。它还允许使用软件客户端通过反射器进行通信,而无需任何AMBE硬件。
所有包含的实用程序都实现了声码器扩展。使用-p dextraopen
标志,或者用“orf”代替反射器的呼号前缀,使dv-player
和dv-recorder
使用“open”dextra端口。
建筑
在mac os x上,我使用MacPorts来安装cmake
、speexDSP
和libsamplerate
。mbelib编译并安装t没有问题。要构建codec2,我必须在运行make
之前export LIBRARY_PATH=$LIBRARY_PATH:/opt/local/lib
,并编辑以下文件以删除不支持的gcc
标志(从build
文件夹中):
unittest/CMakeFiles/ofdm_stack.dir/flags.make
,删除-fstack-usage
unittest/CMakeFiles/ofdm_stack.dir/link.txt
,删除-Wl,-Map=ofdm_stack.map
基于ircDDBGateway和xlxd。用我的xlxd fork测试。
73 de sv9oan