Github项目推荐 | 什么?用Adblock Radio可以屏蔽电台里的广告?!

2019 年 1 月 17 日 AI研习社

Adblock Radio是一个实时广播流和播客的广告拦-截-器。当然,本项目主要以拦截Shazam的广播流为主。

网址:https://www.adblockradio.com

项目地址:https://github.com/adblockradio/adblockradio

(注:划线部分链接要点击文末【阅读原文】才能访问哦!)

AdblockRadio.com的引擎。 这里有演示独立播放的演示demo

概览

技术讨论请点击:Link

无线广播流需要下载predictor.js和模块  adblockradio/stream-tireless-baler ,播客则下载predictor-file.js

在这两种情况下,音频会被解码为单通道,22050 Hz PCM与ffmpeg。

大约一秒钟PCM音频块会被传送到两个子模块:

  • 时频分析仪(predictor-ml/ml.js),用神经网络分析光谱内容。

  • 指纹匹配器(predictor-db/hotlist.js),用于搜索已知广告、音乐或歌谣确切的出现次数。

post-processing.js中,将会收集每个音频段的结果并进行清理。

可读接口Analyzer可以向最终用户公开。 它的流包含音频本身和所有分析结果的对象。

在普通笔记本电脑的CPU上运行的时候,文件的运行速度为5-10X,实时流的使用量为10-20%。

入门

安装

作为前提条件,你需要安装以下环境:

  • Node.js 和 NPM。该项目已经在8.*和10.* (NPM 分别是5.6.0及6.2.0)的节点上进行了测试。如果需要在平台上管理多个节点版本,则可能需要使用NVM

  • Python (在v2.7.9版本上测试)。

  • Keras (在v2.0.8版本上测试),Keras的安装请点击Link

  • TensorFlow(在 TensorFlow v1.4.0 和 TensorFlow-GPU v1.3.0 版本上进行了测试),安装向导请点击Link

  • FFmpeg(在v2.6.9版本上进行了测试),安装向导请点击Link

然后再安装这个模块:

git clone  
cd adblockradio
npm install

命令行演示

在启动时和运行时期间,会自动从 adblockradio.com/models/ 更新两个文件:

适用于时频分析仪的兼容机器学习模型(* .keras)。

指纹数据库(* .sqlite),用于指纹匹配器。


直播流分析

在法语RTL直播广播流上运行演示:

node demo.js

以下是演示脚本的示例输出,显示检测到的广告:

{
 "gain": 74.63,
 "ml": {
   "class": "0-ads",
   "softmaxraw": [
     0.996,
     0.004,
     0
   ],
   "softmax": [
     0.941,
     0.02,
     0.039
   ],
   "slotsFuture": 4,
   "slotsPast": 5
 },
 "hotlist": {
   "class": "unsure",
   "file": null,
   "matches": 1,
   "total": 7
 },
 "class": "0-ads",
 "metadata": {
   "artist": "Laurent Ruquier",
   "title": "L'été des Grosses Têtes",
   "cover": "https://cdn-media.rtl.fr/cache/wQofzw9SfgHNHF1rqJA3lQ/60v73-2/online/image/2014/0807/7773631957_laurent-ruquier.jpg"
 },
 "streamInfo": {
   "url": "http://streaming.radio.rtl.fr/rtl-1-44-128",
   "favicon": "https://cdn-static.rtl.fr/versions/www/6.0.637/img/apple-touch-icon.png",
   "homepage": "http://www.rtl.fr/",
   "audioExt": "mp3"
 },
 "predictorStartTime": 1531150137583,
 "playTime": 1531150155250,
 "tBuffer": 15.98,
 "audio": ...
}

播客分析

也可以用来分析无线电记录。 在法语RTL广播的录音上运行演示,包括广告、谈话和音乐:

node demo-file.js

逐步输出类似于直播流分析。特定于记录的附加后处理中隐藏了预测中的不确定性,并显示每个类的大块数据,时间戳以毫秒为单位,使其准备好进行切片。

[
 {
   "class": "1-speech",
   "tStart": 0,
   "tEnd": 58500
 },
 {
   "class": "0-ads",
   "tStart": 58500,
   "tEnd": 125500
 },
 {
   "class": "1-speech",
   "tStart": 125500,
   "tEnd": 218000
 },
 {
   "class": "2-music",
   "tStart": 218000,
   "tEnd": 250500
 },
 {
   "class": "1-speech",
   "tStart": 250500,
   "tEnd": 472949
 }
]

注意,在分析音频文件的时候,你仍然要提供广播流的名称,因为该算法必须加载声学参数和已知样本的数据库。目前还不支持对与广播无关的播客进行分析,但将来可能会支持。


文档

使用

const { Analyser } = require("adblockradio");
const abr = new Analyser({
 country: "France",
 name: "RTL",
 config: {
   ...
 }
});

abr.on("data", function(obj) {
 ...
});


Property-属性 Description-说明 Default-默认值
country-国家

Country of the radio stream according to radio-browser.info

根据radio-browser.info记录的广播流的国家

None
name-名称 Name of the radio stream according to  radio-browser.info
根据radio-browser.info记录的广播流名称
None
file-文件 File to analyse (optional, analyse the live stream otherwise)
要分析的文件(可选,否则默认分析实时流)
None

请记住,你需要下载如上面的演示部分所示的模型。

可选配置

标有 * 的属性仅用于实时广播流分析,而不是忽略它们的文件分析。

调度

Property-属性 Description-说明 Default-默认值
predInterval send stream status to listener every N seconds
每隔N秒将流状态发送给侦听器
1
saveDuration* if enabled, save audio file and metadata every N predInterval times
如果启用,则每隔N次predInterval次数保存音频文件和元数据
10
modelUpdatesInterval if enabled, update model files every N minutes
如果启用,则每N分钟更新一次模型文件
60

转换

Property-属性 Description-说明 Periodicity-周期性 Default-默认值
enablePredictorMl perform machine learning inference
执行机器学习推理
predInterval true
enablePredictorHotlist compute audio fingerprints and search them in a DB
计算音频指纹并在数据库中搜索它们
predInterval true
saveAudio* save stream audio data in segments on hard drive
在硬盘上分段保存流音频数据
saveDuration true
saveMetadata save a JSON with predictions
保存带有预测的JSON文件
saveDuration true
fetchMetadata* gather metadata from radio websites
从电台网站收集元数据
saveDuration true
modelUpdates keep ML and hotlist files up to date
保持机器学习和hotlist文件最新
modelUpdatesInterval true

路径

Property-属性 Description-说明 Default-默认值
modelPath directory where ML models and hotlist DBs are stored
存储ML模型和热门DB列表的目录
__dirname + '/model'
saveAudioPath* root folder where audio and metadata are saved
保存音频和元数据的根文件夹
__dirname + '/records'


输出

使用Analyzer构造的可读流将使用以下属性发出对象。某些属性仅在进行实时广播流分析时可用。它们标有 * ,其他特定于文件分析的标记为 ** 

  • audio *:包含一大块原始(压缩)音频数据的缓冲区。

  • ml:如果不可用则为null,否则为包含时频分析器结果的对象

    • softmaxraw:由三个数字组成的数组,表示广告、语音和音乐之间的 softmax 。

    • softmax:与softmaxraw相同,但在未来使用slotsFuture数据点和过去的slotsPast数据点进行平滑处理。平滑权重由post-processing.jsconsts.MOV_AVG_WEIGHTS定义。

    • class(分类):0-ads(广告),1-speech(讲话),2-music(音乐)或不确定。根据softmax分类。

  • hotlist:如果不可用则为null,否则为包含指纹匹配器结果的对象。

    • file:如果分类不是“不确定”,则识别文件的引用。

    • total:为给定音频段计算的指纹数。

    • matches(匹配):音频段和指纹数据库之间匹配的指纹数。

    • class:0-ads(广告),1-speech(讲话),2-music(音乐),3-jingles(歌谣)或不确定是否找不到足够的匹配。

  • class:算法的最终预测。 0-ads(广告),1-speech(讲话),2-music(音乐),3-jingles(歌谣)或不确定。

  • 元数据*:实时元数据,由模块adblockradio/webradio-metadata提取和解析。

  • streamInfo *:有关流的静态元数据。 包含流URL,favicon,比特率(字节/秒),音频文件扩展名audioExt(mp3或aac)和 主页 URL

  • gain-增益:表示流的平均音量的dB值。 如果你希望规范播放音量,则非常有用。 由mlpredict.py计算。

  • tBuffer *:音频缓冲区的秒数。 由adblockradio/stream-tireless-baler计算。

  • predictorStartTime *:算法启动的时间戳,有助于获得正常运行时间。

  • playTime *:播放给定音频的大致时间戳。 在TODO查看。

  • tStart **:与预测关联的时间间隔的下限(以毫秒为单位)

  • tEnd **:与预测相关的时间间隔的上限(以毫秒为单位)


支持的广播

支持的广播列表可在此处获得

开发者需要注意的地方

欢迎对本模块进行集成。这里有一些建议

这里提供了一个用于Web浏览器的独立演示播放器


License

查看许可文件。

感谢你对本项目的贡献,但是你可能需要遵守贡献者的许可协议。


网址:https://www.adblockradio.com

项目地址:https://github.com/adblockradio/adblockradio


【AI求职百题斩 - 每日一题】

赶紧来看看今天的题目吧!

想知道正确答案?

点击今日推文【第3条】或 在公众号回复“0117挑战”即可答题获取!

点击阅读原文,查看更多内容

登录查看更多
0

相关内容

斯坦福2020硬课《分布式算法与优化》
专知会员服务
122+阅读 · 2020年5月6日
专知会员服务
61+阅读 · 2020年3月19日
【快讯】CVPR2020结果出炉,1470篇上榜, 你的paper中了吗?
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
70+阅读 · 2020年1月17日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
88+阅读 · 2019年10月21日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
30+阅读 · 2019年10月17日
Github六个知识图谱实战项目推荐
专知
383+阅读 · 2019年6月2日
Github项目推荐 | Pytorch TVM 扩展
AI研习社
11+阅读 · 2019年5月5日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
【推荐】中文处理(BiLSTM分词)工具包FoolNLTK
机器学习研究会
6+阅读 · 2017年12月27日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Arxiv
4+阅读 · 2018年4月17日
Arxiv
7+阅读 · 2018年1月10日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
相关资讯
Github六个知识图谱实战项目推荐
专知
383+阅读 · 2019年6月2日
Github项目推荐 | Pytorch TVM 扩展
AI研习社
11+阅读 · 2019年5月5日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
【推荐】中文处理(BiLSTM分词)工具包FoolNLTK
机器学习研究会
6+阅读 · 2017年12月27日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Top
微信扫码咨询专知VIP会员