
说实话,我一开始也没想到,自己会有一天用Go语言去测一台收音机,但事情就是这么发生的。
事情是这样的,我手上有一台德生PL365,这是一款全波段数字调谐收音机,外形很小,大概就巴掌那么大,铝合金面板,旋钮手感还不错,网上关于它的视频评测不少,但大多是主观听感,我就想,能不能用代码来“量化”一下它的性能?说干就干,我用了Golang写了个简单的测试脚本,测它的频率稳定性、信号接收灵敏度、以及立体声分离度这些指标。
为什么要用Golang去测收音机?
你可能觉得奇怪,收音机评测,拿个耳朵听不就完了?但问题是,耳朵会骗人,而且不同时间、不同地点、不同天气,同一个台的信号强度都不一样,我需要的是一个可重复、可量化的测试流程。
Golang的好处是:编译快、并发好、跟硬件打交道方便,我用它读取一个外接的SDR(软件定义无线电)接收模块,然后对PL365输出的音频进行频谱分析,说白了,就是让电脑“听”收音机,然后记下数据。
测试环境准备
我先列一下这次测试用的东西:
- 德生PL365:测试对象,固件版本是V2.0
- 笔记本电脑:跑Golang脚本和数据记录
- NooElec RTL-SDR:用来捕获PL365的射频输出(是通过天线耦合而不是直接接线,避免影响本振)
- 音频线:3.5mm转RCA,连接PL365耳机口到声卡Line in
- Golang 1.21:写了大概300行代码,主要是调用
portaudio库和go-dsp库做频谱分析
表格看得清楚点:
| 项目 | 具体配置 | 备注 |
|---|---|---|
| 收音机 | 德生PL365 | 全波段,数调,DSP芯片 |
| 信号源 | RTL-SDR | 天线架在窗边 |
| 音频采集 | 外置USB声卡 | 24bit/48kHz |
| 软件栈 | Golang + PortAudio + go-dsp | 自写脚本分析载波和音频 |
实测过程中的一些发现
频率准确度:Golang脚本帮我抓到了漂移
我用FM频段,锁定一个本地强台(频率是104.5MHz),然后让PL365静置,Golang脚本每隔10秒记录一次实际收到的中心频率。
结果有点意思,刚开始两分钟,频率非常准,104.5000MHz,误差不到10Hz,但到了第5分钟,脚本显示中心频率变成了4993MHz,漂了大概700Hz,这不算大问题,毕竟收音机有AFC(自动频率控制),但PL365的AFC响应速度确实不算快。
图就不放了,但数据是:5分钟内最大漂移约1.2kHz,之后稳定在±300Hz以内。这个水平在中档收音机里算中等偏上,比德生以前的模拟机好不少。
灵敏度测试:弱信号下的表现
我选了SW(短波)波段,找一个傍晚信号弱的台(大概15MHz附近),然后用手动转向天线,让信号强度从强变弱,Golang代码里我写了个简单的阈值检测,当信噪比低于15dB时,脚本就开始记录音频包络。
PL365在信噪比12dB左右还能清晰解调出语音,这比我预想的好,我对比了手头一台旧的德生R9700DX,那个大概要18dB以上才不会听出杂音。PL365的DSP芯片在降噪方面确实有优势。
这里有一组测试数据,我列成一个表格:
| 信噪比 (dB) | PL365可懂度 | 对比机 (R9700DX) | 备注 |
|---|---|---|---|
| >20 | 清晰无噪 | 清晰微噪 | 强信号下差别不大 |
| 15-20 | 清晰,背景轻噪 | 略有杂音 | PL365 DSP开始工作 |
| 12-15 | 可听懂,偶有中断 | 杂音大,难听懂 | PL365明显胜出 |
| <12 | 断续,基本不可用 | 断断续续 | 两者都不行 |
关于PL365的操作手感与UI的一点感受
测完性能,还是聊聊上手体验,这东西真小,叠起来跟一包烟差不多,按键手感偏硬,尤其是那个飞梭旋钮,有点松垮,但定位还算准。屏幕背光是橙色的,晚上看有点复古感,我最喜欢的是它可以直接输入频率,省得存台翻来翻去。
不过也有槽点,电池仓盖有点薄,我扣了两下就感觉要裂,还有那个音质,用喇叭外放的时候,声音偏单薄,低音基本没有,不过你想想,这么小的机身,喇叭口径就那么点,也别指望轰头,插上耳机之后,立体声分离度倒是还可以,我用Golang脚本测了下左右声道串扰,大概在40dB级别,比手机强,但比不上台机。
那些我写代码时犯的傻
写测试脚本也不是一帆风顺的,一开始我想用FFT直接分析音频频谱,结果发现PortAudio的缓冲配置不对,导致数据一直错位,调试了两个小时,最后发现是采样率设置成44100但实际声卡跑的是48000,坑死个人。
还有一次,我连接PL365耳机口到声卡时,忘了关收音机的立体声增强模式,结果测出来的左右声道分离度数据异常得离谱,后来关掉EQ,数据才恢复正常,所以啊,测试前一定要确认收音机处于“平直”状态,不然代码再对也没用。
收尾的地方
测也测了,写也写了,最后收个尾吧,德生PL365这个收音机,它不完美,旋钮松垮、喇叭音质一般、电池盖让人担心,但它的接收性能在同体积机器里确实算第一梯队,用Golang“测视频评”这件事,算是我个人的一种偏执——用代码去验证主观感受,结果它也证实了:耳朵听到的“清楚”,背后是DSP算法和射频设计的功劳。
这台小机器,我目前当床头机用,晚上听听远方的短波台,偶尔写写Go代码,挺搭的,你要问我值不值?三百来块钱,能收到半个地球的信号,还要啥自行车。
本文来自作者[kyadmin]投稿,不代表be365立场,如若转载,请注明出处:http://www.hljbesthome.com/tiyu/1006.html
评论列表(4条)
我是be365的签约作者“kyadmin”!
希望本篇文章《德生PL365收音机测视频评,小身材里的大世界,我用Golang写了段代码来测它》能对你有所帮助!
本站[be365]内容主要涵盖:be365,be365网站,be365网址,ball365体育,Be365排名
本文概览:说实话,我一开始也没想到,自己会有一天用Go语言去测一台收音机,但事情就是这么发生的。事情是这样的,我手上有一台德生PL365,...