gpt4 book ai didi

naudio - 如何在不使用 NAudio 和 .NET 重新编码的情况下检测静音和剪切 mp3 文件

转载 作者:行者123 更新时间:2023-12-04 11:53:05 27 4
gpt4 key购买 nike

我一直在到处寻找答案,但我只能找到一些零碎的东西。我想要做的是加载多个 mp3 文件(暂时合并它们),然后使用静音检测将它们切成碎片。

我的理解是,我可以为此使用 Mp3FileReader,但问题是:
1. 如何从 mp3 文件中读取 20 秒的音频?我需要阅读 20 次 reader.WaveFormat.AverageBytesPerSecond 吗?或者继续阅读帧,直到 Mp3Frame.SampleCount/Mp3Frame.SampleRate 的总和超过 20 秒?
2. 我如何真正检测到静音?我会查看适当数量的连续样本,以检查它们是否都低于某个阈值。但是,无论样本是 8 位还是 16 位、单声道或立体声等,我如何访问它们?我可以直接解码 MP3 帧吗?
3. 在我检测到样本 10465 静音后,如何将其映射回 mp3 帧索引以执行剪切而不重新编码?

最佳答案

这是我推荐的方法(确实涉及重新编码)

  • 使用 AudioFileReader直接在 Read 方法中将 MP3 作为浮点样本获取
  • 找到一个开源噪声门算法,将其移植到 C#,并使用它来检测静音(即,当噪声门关闭时,您将获得静音。您需要调整阈值和攻击/释放时间)
  • 创建派生 ISampleProvider使用噪声门,并在其 Read方法,不返回沉默的样本
  • 要么:将输出传递到 WaveFileWriter 以创建 WAV 文件并将 WAV 文件编码为 MP3
    或者:使用 NAudio.Lame直接编码,无需 WAV 步骤。您可能需要先从 SampleProvider 返回到 16 位 WAV 提供程序
  • 关于naudio - 如何在不使用 NAudio 和 .NET 重新编码的情况下检测静音和剪切 mp3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157403/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com