如何使用c#更改波形文件中的频率(音高)和幅度

Posted

技术标签:

【中文标题】如何使用c#更改波形文件中的频率(音高)和幅度【英文标题】:how to change frequency ( pitch) and the amplitude in wave file using c# 【发布时间】:2013-06-20 19:45:39 【问题描述】:

如何使用 c# 更改波形文件中的频率(音高)和幅度,但在波形文件上不是音调 http://www.youtube.com/watch?v=Tumpkl-xJuA

【问题讨论】:

声音是一个非常复杂的主题,您的问题非常广泛。您可能需要首先尝试将波形文件读入内存并将其分解为定义波形文件的不同块。要更改幅度,您只需将每个样本乘以一个比例值。 Pitch 是一个非常先进的东西,可以在不改变其他因素的情况下进行更改,所以祝你在这方面找到任何东西而不会遇到专利。 不,我想做这家伙在视频中做的同样的事情,但在波形文件而不是音调上 音高幅度?这没有任何意义。 【参考方案1】:

answer here 提供了将波形 (.wav) 音频文件读入 c# 数组所需的一切。它将值从 -1.0 标准化为 1.0。

所以你需要做的就是

使用上述代码将文件读入 c# 双精度数组。它实际上返回两个数组,一个用于左右立体声通道。如果它是单声道的,只需使用一个。 对内存中的 c# 数组进行修改: 更改音高意味着以更低或更高的采样率重新采样阵列,实际上是通过拉伸或缩小波形来调整频率。此时您可能需要使用某种形式的插值。 可以在下一步进行幅度调整。 将数组写入新的 Wave 文件;请参阅 https://web.archive.org/web/20141213140451/https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ 了解完整的 Wave 格式规范……它并不复杂。

【讨论】:

以上是关于如何使用c#更改波形文件中的频率(音高)和幅度的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中更改原始波形数据的音高

如何更改录制音频的音高并在后台保存?

如何使用 java 从 pcm 字节数组 .wav 文件中获取频率和音高?

如何使用频谱分析仪

如何讲正弦波转化为方波?频率不变。

如何将波形数据转换为复数