分析广播广告分布

阿Leo的日常 中级 3小时前 更新于 2026年7月25日 541 浏览 2 点赞 约 2 分钟

一个人的好奇心能把项目带到哪里?我开着一辆20年前的老车,没AUX没蓝牙,只能听模拟广播。在悉尼开车时我发现个奇怪的现象:很多时候我切台,发现所有频道都在播广告,甚至有些广告内容还一模一样。这种“同步感”让我觉得这背后肯定有某种排期规律。

为了验证这个直觉,我搞了一套同步采样方案,虽然没什么商业价值,但用传统数据分析结合AI工具跑一遍流程确实挺爽的。

方案实现与技术链路

核心难点在于如何保证“同步”。如果顺序录制,时间差会导致无法分析不同电台的广告相关性。

一、同步抓取音频
我找到了悉尼11个主要电台(包括AM和FM)的在线流媒体地址,然后写了一个多线程脚本,利用 ffmpeg 同时对这11个流进行截取。每次截取18秒,采样率强制下采样到16kHz单声道,以减少后续处理的内存压力。

具体的 ffmpeg 截取逻辑大致如下:

ffmpeg -i "http://stream-url-here" -t 18 -ar 16000 -ac 1 output.wav
通过 Python 的 ThreadPoolExecutor 同时启动11个这样的进程,确保每个片段的时间戳是完全一致的。

二、语音转文字 (STT)
录完音频后,我没有用云端 API,而是直接在本地跑了一个从 Hugging Face 下载的 Whisper 模型(大约500MB那个版本)。每个18秒的片段被转成文本片段。

三、内容分类
拿到文本后,我用 GPT-4o-mini 做了一个简单的分类器。因为这种任务对推理能力要求极低,mini 版本的成本几乎可以忽略不计。提示词很简单,要求它将文本归类为:Ad (广告), Song (歌曲), 或 Talking (谈话)。

踩坑细节与实测观察

在实操过程中,有几个点需要注意:

  • 采样时长陷阱:最初我尝试录制10秒,但发现很多广播广告的衔接点在10-15秒之间,导致分类结果出现大量模糊地带。后来增加到18秒,分类准确率明显提升。
  • Whisper 的幻听问题:在录到纯音乐片段时,Whisper 有时会随机生成一些莫名其妙的短句(比如 "Thank you for watching"),这会导致 GPT-4o-mini 误判为 Talking。解决方法是在提示词中加入对“无意义短语”的过滤逻辑。

实测发现的有趣数据:
  • 广告同步率:果然验证了我的猜想,部分商业电台的广告时间点高度重合,这说明广告投放有某种统一的排期机制。
  • 时间分布:每小时的整点前后,广告的出现频率明显高于每小时的中间时段。

总结工具链

这次实操的完整工作流
Online Streamsffmpeg (Parallel Recording)Local Whisper (STT)GPT-4o-mini (Classification)Data Analysis

这种“传统采样+AI分类”的组合比纯靠人工标注快了不止一个量级。如果你也想分析某种周期性音频信号,这套 ffmpeg + Whisper 的组合非常稳。

求助

全部回复 (4)

前端老刘 高级 10小时前
我也试过录音分析,感觉用个简单的频谱图比纯听效率高多了。
0 回复
完美主义技术宅 专家 10小时前
以前在国外开车也发现过这事,感觉像被某种定时开关统一控制了,挺诡异的。
0 回复
大鹏的日常 初级 10小时前
你采样的时候是怎么对齐时间的?不同频道之间会有几秒延迟吧?
0 回复
程序员老陈 初级 10小时前
记得提下信号干扰吧,有些频段在隧道里切台会有重影,影响采样没?
0 回复

发表回复

支持 Markdown 格式