如何在 OpenSMILE 中创建自定义配置文件

2024-01-02

我正在尝试使用 OpenSMILE 从音频样本中提取一些功能,但我意识到设置配置文件是多么困难。

该文档不是很有帮助。我能做的最好的事情就是运行一些提供的示例配置文件,查看结果,然后进入配置文件并尝试确定指定功能的位置。这是我所做的:

我使用了 INTERSPEECH 2010 Paralinguistic Challenge (IS10_paraling.conf) 中使用的默认功能集。

我在一个示例音频文件上运行了它。

我看了看结果。然后我深入阅读配置文件,试图找出指定该功能的位置。

这是一个小降价表,显示了我的探索结果:

| Feature generated | instruction in the conf file                            |
|-------------------|---------------------------------------------------------|
| pcm_loudness      | I see: 'loudness=1'                                     |
| mfcc              | I see a section: [mfcc:cMfcc]                           |
| lspFreq           | no matches for the text 'lspFreq' anywhere              |
| F0finEnv          | I seeF0finalEnv = 1 under [pitchSmooth:cPitchSmoother]  |

我看到的是 4 个不同的功能,全部由配置文件中的不同指令生成。好吧,对于其中之一,我在配置文件中没有找到任何令人不安的指令。由于没有模式或直观的语法或明显的系统,我不知道如何最终弄清楚如何指定我想要生成的自己的功能。

没有教程,没有 YouTube 视频,没有 StackOverflow 问题,也没有博客文章谈论如何做到这一点。这确实令人惊讶,因为这显然是使用 OpenSMILE 的重要部分。

如果有人发现这个,请告诉我如何创建 OpenSMILE 的自定义配置文件?谢谢!


感谢您对 openSMILE 的兴趣以及您渴望构建自己的配置文件。

科学界的大多数用户实际上使用 openSMILE 作为基线功能集的预定义配置文件,在 2.3 版本中使用起来更加灵活(更多命令行选项可以输出到不同的文件格式等)。

我承认所提供的文档并不那么好。然而,openSMILE 是一个非常复杂的软件,具有很多功能,目前只有最重要的部分有详细的文档记录。

最好的起点是阅读 openSMILE 书籍和 SIG'MM 教程,所有参考文献均位于http://opensmile.audeering.com/ http://opensmile.audeering.com/。它包含有关如何编写配置文件的部分。下一个重要元素是二进制文件的在线帮助:

  • 微笑提取物-L列出可用的组件
  • SMILExtract -H cComponentName列出给定组件支持的所有选项(以及它可以提取的功能)以及每个选项的简短描述
  • SMILExtract -configDflt cComponentName为您提供组件的模板配置部分,其中列出了所有选项并设置了默认值

由于 openSMILE 的架构以所有音频功能的增量处理为中心,因此(至少目前还没有)没有简单的语法来定义您想要的功能。相反,您可以通过添加组件来定义处理链:

  • 数据源将读取数据(例如,从音频文件、csv 文件或麦克风),
  • 数据处理器将在各个步骤中进行信号处理和特征提取(加窗、窗函数、FFT、幅度、梅尔谱、倒谱系数 (MFCC),例如用于提取 MFCC);每个步骤都有一个数据处理器。
  • 数据接收器将数据写入输出文件或将结果发送到服务器等。

您可以通过“reader.dmLevel”和“writer.dmLevel”选项连接组件。它们定义了组件用来交换数据的数据存储级别的名称。只有一个组件可以写入一个级别,即 writer.dmLevel=levelName 定义该级别并且只能出现一次。通过设置 reader.dmLevel=levelName,多个组件可以从此级别读取。

然后,在每个组件中设置选项以启用功能计算并为此设置参数。回答有关 lspFreq 的问题:这可能在 cLsp 组件中默认启用,因此您看不到它的显式选项。对于 openSMILE 的未来版本,将并且应该更严格地遵循明确设置所有选项的做法。

输出中的功能名称将由组件自动定义。通常每个组件都会添加名称的一部分,因此您可以从名称推断出完整的处理链。选项 nameAppend 和 copyInputName(可用于大多数数据处理器)控制此行为,尽管某些组件可能会在内部覆盖它们或稍微更改行为。

查看每个数据内存级别的名称(和其他信息),包括例如如果要在配置中生成某个组件,您可以在 componentInstances:cComponentManager 部分中设置选项“printLevelStats=5”。

由于 openSMILE 中的 everyhting 都是为实时增量处理而构建的,因此每个数据内存级别都有一个缓冲区,默认情况下是一个环形缓冲区,以便在应用程序运行较长时间时保持内存占用恒定。 有时您可能想要总结给定长度的窗口上的特征(例如使用 cFunctionals 组件)。在这种情况下,您必须确保该组件的输入级别的缓冲区大小足以容纳整个窗口。您可以通过以下选项执行此操作:

  • writer.levelconf.isRb = 1/0 : 将缓冲区类型设置为ringbuffer (1) 或固定大小缓冲区

  • writer.levelconf.growDyn = 1/0 :将缓冲区设置为在写入更多数据时动态增长 (1)

  • writer.levelconf.nT = 设置缓冲区的大小(以帧为单位)。或者,您可以使用 bufferSizeSec=x 设置大小(以秒为单位)并自动转换为帧。

在大多数情况下,尺寸将自动正确设置。后续级别也继承先前级别的配置。例外情况是,当您将 cFunctionals 组件设置为读取完整输入(例如,仅在文件末尾生成一个特征)时,您必须在函数组件读取的级别上使用 GrowthDyn=1,或者如果您使用变量成帧模式(见下文)。

cFunctionals 组件提供帧模式、帧大小、 and 帧步长选项。其中frameMode可以是完整*(在输入/文件末尾生成一个向量),**列表(指定框架列表),var(接收消息,例如从 cTurnDetector 组件接收动态定义帧的消息),或者fix(固定长度窗口)。仅在以下情况下fix选项frameSize设置该窗口的大小,并且帧步长窗口向前移动的速率。的情况下fix输入级别的缓冲区大小会自动正​​确设置,在其他情况下您必须手动设置。

我希望这可以帮助您入门!对于每一个新的 openSMILE 版本,我们 audEERING 都在尝试更好地记录事物并通过各种组件统一事物。

我们也欢迎来自社区的贡献(例如,任何愿意编写图形配置文件编辑器的人,您可以在其中拖放组件并以图形方式连接它们?;)) - 尽管我们知道更多的文档将使这变得更容易。在那之前,您始终必须阅读源代码;)

干杯, 弗洛里安

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OpenSMILE 中创建自定义配置文件 的相关文章

  • 如何在 Android 上的 PhoneGap 中设置音频播放速率?

    有谁能够让音频播放速率在 Android 上工作吗 媒体播放器似乎覆盖 忽略音频标签的播放速率属性 None
  • 如何禁用 WebBrowser 控件中的点击声音

    我使用 Javascript 单击网络浏览器控件中的链接 但我不想听到IE的 咔哒 声 有什么办法可以做到这一点吗 P S 我不想更改系统设置 我见过这个 如何仅在您的应用程序中禁用网络浏览器 点击声音 https stackoverflo
  • 播放声音无延迟 iOS

    我找不到如何以低延迟播放真实声音的方法 我尝试使用 AVFoundation 音频播放器 巨大的延迟大约 500 毫秒 所以我尝试创建系统声音 如果运气不好 延迟大约为 200 毫秒 虽然不多 但对我来说没有用 我最多需要 50 毫秒 确保
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • Android Mediaplayer:下载媒体文件的 setDataSource 问题

    我有一个可以录制和播放音频文件的应用程序 一些音频文件是使用 httpclient 使用简单的标准 http 下载来下载的 很长一段时间以来 它就像一种魅力 现在我突然无法播放我下载的文件 该堆栈失败 我将文件存储在 SDCard 上 并且
  • ffmpeg 命令行,用于使用 Windows 7 从 Decklink 卡捕获(和录制)720p 音频和视频

    我正在尝试使用 Windows 7 720p 从 blackmagic Decklink 捕获卡捕获音频和视频 但我似乎无法正确获取 ffmpeg 命令行设置 ffmpeg list devices true f dshow i 虚拟 ds
  • 如何将 G.726 ADPCM 信号转换为 PCM 信号?

    我通常会使用 SoX 或 Windows 内置的音频库来获取这些内容 但似乎两者都没有 G 726 编解码器 因此 我有一个字节序列 我知道它被编码为 G 726 尽管目前尚不知道比特率以及它是 mu law 还是 A law 实验将确定这
  • iOS 音频修剪

    我搜索了很多 找不到任何相关的东西 我正在处理 iOS 音频文件 这就是我想做的 录制音频并保存剪辑 已检查 我使用AVAudioRecorder 改变音高 已检查 是用狄拉克做的吗 修剪 我有两个标记 即开始和结束偏移 并使用此信息我想修
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • 如何用SKAction循环播放音乐?

    我想用 SKAction 循环背景音乐 但当我切换到另一个场景时 音乐在一行后停止 有没有办法开始循环并在不同的场景中继续播放 现在代码放置在 MyScene 的 init 方法中 这是正确的位置吗 也许 didFinishLaunchin
  • 使用 UIImage 和 caf 创建视频文件的问题

    我已经阅读了在互联网上可以找到的所有关于此功能的帖子 并且我在创建视频文件方面取得了一些成功 但我还剩下 3 个问题 而且似乎没有人提到过这一点 我有 3 个问题 视频在某些播放器上无法正常播放 quicktime window 视频只播放
  • 音乐分析软件[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 问候 我可能已经想到了这一点 但有人知道 Last fm 之前是否使用某种形式的开源项目对音乐进行分析
  • 如何使用 Android 手机通话时播放声音?

    是否可以通过编程方式与电话进行交互 例如 您可以通过程序向呼叫者播放音频吗 Google 尚未公开任何允许我们向特定正在进行的调用提供数据的 API 不过 您可以控制通话 检查这篇文章 here http prasanta paul blo
  • Actionscript 3:使用字符串中的名称播放库中的声音

    我正在尝试编写一些 actionscript 3 代码来播放库中的短声音 使用动态创建的字符串来加载它 在 AS2 中 我可以这样做 mySound new Sound mySound attachSound any concatenate
  • 在 Raspberry Pi 4 上的多个输出设备上播放多个 mp3 文件

    我需要 4 8 个同时播放立体声音频音乐频道 连续播放 SD 卡上特定文件夹中的 mp3 音乐 Working 板载 3 5 音频插孔 USB声卡正常播放音乐 Problem 但一旦我尝试在树莓派上使用带有 USB 声卡的第三个音频输出 其
  • 如何降低iphone的sdk Audioqueue的声音?

    我正在使用 Aran Mulhollan 的 RemoteIOPlayer 在 SDK iphone 中使用音频队列 我可以毫无问题 添加两个信号来混合声音 通过乘以从 wav 文件中获得的 UInt32 来增加音量 但所有其他操作都会给我
  • 如何在Python中获取声音级别?

    对于我正在进行的项目 我需要获取麦克风的实时分贝级别 我见过阴谋家 Print out realtime audio volume as ascii bars import sounddevice as sd import numpy as
  • 如何在Android中使用AudioRecorder录制音频

    我想从 Android 设备捕获音频 我下面的代码似乎成功地制作了一个wavSD卡上有文件但无法播放 我尝试使用不同的媒体播放器来播放它 但没有成功 我的代码中有一个问题导致了这个问题 code public class MainActiv
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • ActionScript Workers 可以用于在单独的线程中播放/生成声音吗?

    我很新ActionScript 工作者 但我想知道这是否可能 从我读到的来看 ActionScript 工作者 ASW 就像单独的线程 可以执行更多 CPU 密集型计算 而无需中断主线程 正在执行主 SWF 文件 我真正看到的唯一一个例子是

随机推荐