使用Label Studio标注音频数据
特别感谢Brandon Martel和Nate Kartchner为本文提供的专业知识和贡献。
数据标注和注释领域近年来取得了巨大进步。研究人员、学者、企业数据科学家和机器学习专业人员使用的工具必须能够跟上整个行业的需求。在这个多媒体文件格式日益丰富的世界里,数据标注工具必须能够处理你在日常工作中可能遇到的每一种文件格式。
音频标注可用于进一步发展语音识别技术。作为更广泛的自然语言话语(NLU)计划的一部分,音频标注可以检测转录工具中的方言、语境和重音,甚至能分解歌曲的组成部分,从而提供更好的音乐推荐。
在深入使用数据标注或标记工具之前,让我们先了解如何开始标注音频数据类型以及您可能需要掌握的知识。本教程中,您可以使用任何您喜欢的数据标记工具,但我们将使用Label Studio。这些功能在Label Studio企业版或开源社区版中均可使用。最新版本的Label Studio包含增强的声音检测功能、新的选择方法、高达1500倍的高级时间轴缩放以及精细调整的控制选项。
初次接触Label Studio或数据标注?点击此处查看这篇博客文章快速入门!
创建新项目。
在Label Studio中,为您的项目添加名称和简短描述后,即可开始使用。导航至下一个标签页以开始导入数据。
上传您的文件
在数据导入标签页中,上传您需要标注的音频文件。有时,您可能已经通过云存储选项获得了可用文件。为了本教程的演示,我们将使用一个准备好的音频文件,一段液体鼓声和一段贝斯音轨。
我们将设置声音事件检测功能,用于识别音频轨道中出现的各种乐器、人声以及其他可听到的声音。
处理较大文件类型
提醒一下,如果您有较大的音频文件可能超出Label Studio的上传限制,您始终可以按照此处所示的方式设置JSON数据或上传JSON数据:
{“data”:{“audio”:””}}
大型音频文件可能来自未直接连接到您的Label Studio实例或账户的外部S3存储桶。请将如下所示的JSON数据准确填入表单填写框,并输入可以找到该文件的URL,或者在此处上传包含相同数据的JSON文件,您的数据将被连接。
用户友好模板
Label Studio平台提供用户友好的模板,帮助您快速启动数据标注流程。现在您可以在企业版和开源版的最新软件更新中找到更多音频模板。
为了今天的教程,让我们探索基础声音事件检测模板来开始音频标注。这个模板预置了两个标签:事件A和事件B。您可以根据需求将它们重命名为更有意义的名称。
探索音频标注界面
您会注意到音频标注的界面与文本或图像文件标注略有不同。您将看到一个类似时间轴的视图——这对使用过音频或视频编辑器的人来说会很熟悉。
自定义标注界面
虽然我们以基础音效检测模板为起点,但我们将利用Label Studio前端的灵活性,展示音频标注中更多的功能与潜力。这是对基础音效模板的扩展应用。在模板选择窗口中,选择"code"并删除当前内容,然后粘贴以下代码块:
<View>
<Header value="Audio Sound Event Detection" />
<AudioPlus name="audio" value="$audio" hotkey="space" />
<Header value="Audio Labels" />
<Labels name="labels" toName="audio">
<Label value="Instrument" background="orange" />
<Label value="Voice" background="green" />
<Label value="SongPart" background="purple" />
</Labels>
<Choices name="Instrument" toName="audio" visibleWhen="region-selected" whenTagName="labels" whenLabelValue="Instrument" choice="multiple" showInLine="true" perRegion="true">
<View>
<Header value="Select the Instruments playing" />
</View>
<Choice value="Drum" />
<Choice value="Bass" />
<Choice value="Cymbal" />
<Choice value="Other" />
</Choices>
<View visibleWhen="choice-selected" whenTagName="Instrument" whenChoiceValue="Other">
<TextArea name="IntrumentOtherText" toName="audio" rows="2" editable="true" perRegion="true" required="false" />
</View>
<Choices name="Voice" toName="audio" visibleWhen="region-selected" whenTagName="labels" whenLabelValue="Voice" choice="single" showInLine="true" perRegion="true">
<View>
<Header value="Select the Voice sound heard" />
</View>
<Choice value="Singing" />
<Choice value="Speaking" />
<Choice value="Other" />
</Choices>
<View visibleWhen="choice-selected" whenTagName="Voice" whenChoiceValue="Other">
<TextArea name="VoiceOtherText" toName="audio" rows="2" editable="true" perRegion="true" required="false" />
</View>
<Choices name="SongPart" toName="audio" visibleWhen="region-selected" whenTagName="labels" whenLabelValue="SongPart" choice="multiple" showInLine="false" perRegion="true">
<Choice value="Intro" />
<Choice value="Chorus" />
<Choice value="Verse" />
<Choice value="Bridge" />
<Choice value="Outro" />
<Choice value="Other" />
</Choices>
<View visibleWhen="choice-selected" whenTagName="SongPart" whenChoiceValue="Other">
<TextArea name="SongPartText" toName="audio" rows="2" editable="true" perRegion="true" required="false" />
</View>
</View>
这段代码创建了一些音频声音事件检测功能,并为我们提供了每个事件的更多细节,展示了在更广阔的数据标注领域中可能存在的不同选择和区域。此外——为了这篇博客文章——这为我们提供了一个更贴近现实世界的场景。
预览您的数据
现在我们已经命名了项目、上传了数据并准备好了模板——让我们加载它吧。
您将看到一个可视化的波形图。您可以通过按下空格键播放音频,这是我们在音频标签的实际配置中设置的。除非您为该参数指定其他按键,否则默认使用空格键。现在,您可以播放并聆听音频提示,同时直观地看到您想要标记标签的确切位置,与您听到的声音相对应。
以歌曲的intro部分为例。你可以从这里开始,立即在缩小的波形图上看到任何内容。很多时候,如果有大量数据,仅通过数据峰值本身很难判断你能从中获取什么信息。
使用键盘和鼠标快捷键
借助平台内置的键盘和鼠标快捷键高效工作。使用鼠标滚轮或键盘命令进行缩放。在Linux或Windows电脑上,按住Ctrl键并滚动滚轮;在macOS设备上,按住Command键并滚动滚轮。若使用触控板,可通过双指捏合在x轴上缩放,也可通过左右滑动在x轴上导航。
检查音频数据
在时间轴上检查音频数据,并使用方便的放大和缩小功能,以便更清晰地查看音频数据中的变化。通过仔细观察音频文件的波峰和波谷,您可以识别出正在发生的不同事件。
为了更仔细地检查波形的平坦部分,您可以放大y轴以便更清晰地查看小范围内的某些点。从头开始,您可以通过点击并拖动播放头来移动它,或者点击时间轴和波形上的任意位置进行导航。如果想要更快捷的方式,您可以直接在时间输入框中输入时间值,这将更新当前时间并使播放头跳转到相应位置。
标注音频数据
在这个视频示例中,您可以看到我们的高级工程师Brandon如何聆听并标注歌曲的不同部分。 在您自己的文件中,您需要滚动浏览文件并识别不同元素可能出现的位置。这可能包括聆听歌曲的不同部分,如引子、副歌、主歌等,或其他响亮事件,如喊叫、飞机起飞声,或您正在处理的音频文件中需要检测的任何其他内容。
从文件开头开始工作,测量音频事件开始的第一个时刻。放置一个标记并标注该时刻。您也可以拖动鼠标绘制一个选区。释放鼠标时,它将开始播放从选区起点到光标当前位置的精确片段并循环播放。在此过程中,您可以随时开始和停止播放,并在进行实际标签选择前调整选区范围。
播放速度
您还可以切换设置面板来调整播放速度。默认情况下,播放速度范围设定在0.5到2.5倍速之间,但请注意浏览器性能可能会限制实际播放速度。速度过快时需谨慎,因为可能导致事件遗漏。放大级别的扫描有时能帮助您分辨细微的浮点数差异,比如轨道上可能发生的针滴声或其他微小事件——这些在常规缩放下可能被误判为静音。除非您放大视图并适当调低这些数值,否则很容易错过这些细节。
切换时间线视图
如果您只需要聆听而不需要关注其他内容,可以隐藏时间轴并关闭音频。您可以仅恢复时间轴本身,或者仍然可以在没有波形的情况下沿时间轴拖动播放头。
编辑和调整标签
与其他标注平台和工具类似,如果您未提交任何内容并取消选择时间轴,您的标注将保存在项目的草稿注释中。
这些草稿也是可编辑的。在任何这些情况下使用滑块或输入有效值。这些值随后将被验证,因此除非您提供适当的内容,否则它将显示为红色。
循环播放
使用未标记的片段或区段循环播放您正在专注聆听的曲目部分,观察可能与您想要标记的内容相关的特征。
使用空格键暂停(可通过上方自定义代码设置进行调整),浏览数据集以识别您可能感兴趣的不同区域。在选中某个片段时,您仍可添加标注或开始新的片段,亦可扩展当前选区以包含多个不同部分。当您认为可以继续处理时,可使用退格键清除当前选区,然后从该点继续标注流程。
如果在时间轴上平移浏览时感到困惑或迷失方向,您可以使用地标来帮助重新定位自己或快速识别关键点。无论是关键点的标注、选区还是关键区域——通过识别这些元素,您就能在时间轴中快速导航并找到路径。
最后——如果操作出错,您随时可以通过按Command/Ctrl Z撤销。如果某个区域位置不正确,您可以通过大纲视图中的按钮删除,或者按退格键/删除键。