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文件转换为.wav
  • dv-transcoder,它连接到AMBED服务器,并使用AMBE声码器将.dvtool文件转换为使用CODEC 2声码器的.dvtool文件,反之亦然

D-Star声码器扩展

我建议使用报头的“flag 3”字节来标记语音帧中的声码器类型,如下所示(根据D-STAR specification第4页第2.1.1节):

BitMeaningFunction
^{}Vocoder^{}: AMBE (backwards compatible)
^{}: Codec 2
^{}Mode^{}: Codec 2 3200 (160 samples/20 ms into 64 bits)
^{}: Codec 2 2400 (160 samples/20 ms into 48 bits) plus FEC (22 bits)
^{} to ^{}UndefinedUse 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-playerdv-recorder使用“open”dextra端口。

建筑

若要生成,必须首先生成并安装mbelibcodec2

在mac os x上,我使用MacPorts来安装cmakespeexDSPlibsampleratembelib编译并安装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

基于ircDDBGatewayxlxd。用我的xlxd fork测试。

73 de sv9oan

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程