gpt4 book ai didi

c++ - 音频操作和删除音频的某些部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:02:46 25 4
gpt4 key购买 nike

我是语音编码的新手,现在我成功地在文件中录制麦克风并使用 SaveRecordtoFile 函数将每 10 秒保存在一个文件中(这样做没有问题)

现在我想从记录的数据中删除例如 2 秒,这样我的输出将是 8 秒而不是 10,在 randomTime 数组中 0 是秒女巫我想被删除...

在 for 循环中,我将 waveHeader->lpData 的数据复制到一个新缓冲区 if (randomTime[i] == '1')

这似乎是一个真正的算法并且应该有效,但问题是输出,一些输出是好的(大约 70% 或更多)但其中一些已损坏

我认为我的代码有错误,但我调试了几天代码,但我不明白问题出在哪里?

因为我 70% 或更多的输出是好的,我认为这不是因为字节或样本

最佳答案

您的代码可能会分解样本,之后流不同步并且您会听到很大的噪音。

它是如何发生的?您的样本大小是 4 个字节。所以你绝不能复制任何不是 4 的倍数的东西。10 秒的音频将占用 10x48000×4=1920000 字节。但是 Sleep(10000) 将始终接近 10 秒但不完全是 10 秒。所以可以得到1920012字节。然后你做:

dwSamplePerSec = waveHeader->dwBytesRecorded / 10; // 10 Secs

返回 192001(不是 4 的倍数)并且 Steam 不​​同步。如果你幸运的话,你会在 10 秒内收到 1920040 字节,并且在除以 10 后仍然是 4 的倍数,你没问题。

关于c++ - 音频操作和删除音频的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503611/

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