【问题标题】:Quantifying voice deepness of singing voices using python使用python量化歌声的声音深度
【发布时间】:2019-12-03 02:02:56
【问题描述】:

我想使用 python 在浮点表示中量化声音的深度。例如,低沉的声音可以用低于 0 的分数来表示,而高亢的声音(与深沉相反)用高于 0 的分数来表示。深沉的声音可以与阿诺德施瓦辛格的声音进行比较,而高声则与小孩子的声音。

我没有从谷歌搜索中找到任何明确的方法来解决这个问题。我尝试使用timbral model 来获得音色分数,但似乎计算没有用。也就是说,深沉的声音和高声音的分数并没有太大的差别。

基于这个source,我可以使用FFT分析。但是,我不明白如何将 FFT 图简化为声音深度的单一表示。

那么在使用 FFT 获得分析后,我该如何进行呢?在一个更广泛的问题中,我如何专门使用 Python 将声音的深度表示为浮点表示?

编辑:有关额外信息,我要量化的数据集由歌声组成。我已经获得了 FFT 输出并通过平均操作减少了时间帧维度,所以我得到了针对频率仓的平均结果。

由于数据集具有显着的音高特征,当两个声音在唱同一个音符时,低沉和高声的矢量峰值相似。我的推断是,这是由于两种声音产生了相同的谐波。 (请随时纠正我的解释。)

有什么有效的方法来区分唱同一个音符的低声和高声?

【问题讨论】:

    标签: python voice


    【解决方案1】:

    您可以在时间空间和频率空间中获取样本的统计信息。通常你会从这两种表示中计算均值、中值、方差和熵。您可以获得其他值,但这些只是基础。通过这种方式,您可以从信号样本中获取值向量。

    为了获得更好的结果,您可以在两种表示中的信号重叠窗口上进行这些计算,这样您可以获得更大、信息更密集的特征向量。

    在这个特定的问题中,我会计算不同频带信号的傅里叶变换的能量和积分,因为您会期望在低沉的声音中较低频率的值更大。

    算法应该类似于

    1. 对信号应用 FFT
    2. 在波段中分割结果
    3. 计算每个波段的能量,将结果附加到数组中
    4. 对每个波段求和,将结果附加到数组中
    5. 进行您认为合适的任何其他计算

    结果将是一个汇总信号的值向量。

    【讨论】:

    • 我使用 librosa 加载音频文件;为澄清起见,overlapping windows 与 librosa 中的框架相同
    • 是的,完全一样。
    • 我已经尝试过了,但我的方法并没有解决我的问题。我刚刚用我的方法的结果更新了这个问题。你有什么建议可以专门用于我的问题吗?或者我目前的方法有什么改进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多