gpt4 book ai didi

c# - 合并现有的音频文件并从中生成新的音频文件

转载 作者:行者123 更新时间:2023-12-03 00:47:49 26 4
gpt4 key购买 nike

我有 2 个示例 wavfile。

我想将它们组合成一个输出 wav,如下所示:

播放第一个 wav,等待 x 秒播放第二个 wav,并将结果保存为新的 wav 文件。

我并不特别喜欢 wav 格式,因此很乐意在必要时使用另一种格式。

从我的研究看来,我需要将 wav 转换为 PCM,然后创建一个新的输出缓冲区并将第一个文件写入输出缓冲区。然后以某种方式为 x 秒创建一个空间,然后将第二个 PCM 写入

我该怎么做呢?

最佳答案

首先你需要搞清楚你在说什么

WAVRIFF 的类型它将声波编码为 PCM .

本质上 PCM表示波的离散值存储在某个 sample rate (通常为 44 kHz)

每个样本可能包含一个或多个 channel 的信息(通常为 2 个)

每个样本的值存储为固定大小的整数或浮点数。 (通常为 16 位整数)

这些属性存储在 WAV header

合并两个单独的 WAV您需要读取两个文件的 header 的文件,如果幸运的话,它们将具有相同的 ByteRate ( == samplerate * channel count * bits/sample/8),那么您只需将第二个文件减去 header 连接到末尾第一个,并将第二个的长度添加到第一个的“长度”字段中。

在任何其他情况下,我建议您使用 library这确实进行了某种重新编码。

如果你有时间和灵感,你可以自己重新编码。

如果您根本不想打扰这些东西,请尝试使用一个完整的程序(即 sox )来满足您的需求。

顺便说一句:如果每个样本的这个位是有符号的,则静音为 0 值,如果它们是无符号的,则为最大值的一半(通常仅在 8 位整数中找到)。

因此,要获得 4 秒的静音,您需要 n = 4 * 采样率 * channel 数 * (位/秒)/8 乘以 0

琐事:您可以使用任何常量值而不是 0 来表示静音

关于c# - 合并现有的音频文件并从中生成新的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343598/

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