2

我需要将 wav 文件编码为另一种文件格式(pcm)。此格式具有以下属性:8kHz,16 位。

有人知道如何在 c# 或 vb 中执行此操作吗?

4

3 回答 3

4

阿尔瓦斯音频库。

以下是主要功能。

  • 录音机允许:
    • 录制未压缩的音频数据 (PCM)
    • 录制压缩音频数据:IMA ADPCM、Microsoft ADPCM、CCITT A-Law、CCITT u-Law、GSM 6.10、MPEG Layer-3 (mp3) 等;
    • 将数据记录到流中(文件流、内存流);
    • 暂停和恢复录音;
    • 获取当前声音位置;
    • 将数据记录到系统中安装的任何记录器(多个声卡)。

  • 播放器允许:
    • 播放未压缩的音频数据 (PCM);
    • 播放压缩音频数据:IMA ADPCM、Microsoft ADPCM、CCITT A-Law、CCITT u-Law、GSM 6.10、MPEG Layer-3 (mp3) 等;
    • 播放流中的数据(文件流、内存流);
    • 播放混合音频数据;
    • 暂停和继续播放;
    • 获取当前声音位置;
    • 播放系统中安装的任何播放器的数据(多个声卡)。

  • 设置混音器控件:
    • 选择要录制的源行;
    • 更改源线音量以进行录制;
    • 额外的控制调整。例如,“麦克风增强”;
    • 更改播放的主音量;
    • 播放静音。

  • 编辑
    • 改变音频数据的速度;
    • 改变音频数据的音量;
    • 将多段音频合并为一个;
    • 剪切一段音频流;
    • 在音频流中插入一段;
    • 删除一段音频流;
    • 从字节数组创建音频格式;
    • 将音频数据多次插入并混合到具有指定偏移量的主音频数据中;
    • 反向音频波流;
    • 将立体声音频流拆分为两个单声道流;
    • 将两个单声道音频流合并为一个立体声。
    • 几个音频文件串联。

  • 转换
    • 将音频数据从一种音频格式转换为另一种。
    • 将音频波流转换为 mp3 流。
    • 将 Dialogic .vox (adpcm) 流转换为 Mp3 流。
    • 将 Wave 流更改为 MP3 流。如果 Wave 流包含 MPEG 第 3 层数据。
    • 播放、录制和转换 RAW 无标题格式(SLINEAR 等)(用于 Asterisk PBX)。
    • 从 Avi 流中播放和提取音频数据。
    • 编码和解码 Dialogic .vox (adpcm) 格式数据(用于 Asterisk PBX)。
    • 将音频波流转换为 mp3 流
    • 将 Dialogic .vox (adpcm) 流转换为 Mp3 流

  • 杂项
    • 查看输入声音信号的电平。
    • 使用强名称签名库。音频库可以添加到 GAC
于 2009-05-11T09:33:58.297 回答
2

未压缩的 Wave 文件包含纯 PCM 数据和一些元数据 - 您可以在 Wotsit.org 上找到描述

如果采样率、分辨率和通道数匹配,您可以去掉元数据。

如果它们不匹配,您将不得不重新采样 Wave 文件,但这不是一项简单的任务,如果您希望它正确完成(下采样需要对数据进行低通滤波以避免由于Nyquist-Shannon 采样而产生的混叠定理和两者 - 上采样和下采样 - 需要良好的插值 - 理想情况下是sinc 插值

于 2009-05-11T10:07:36.807 回答
-1

我不确定你到底想做什么。WAV 文件(通常)只是未压缩 pcm 数据的包装器。

但是,无论您是想访问数据,还是写出 RAW 无头 PCM 文件,都可以使用libsndfile。我在 ArsTechnica 论坛上找到了一些 c#示例代码。

RE: Daniel Brückner 的回答
libsndfile 的作者还写了libsamplerate,它可以简化重采样。

于 2009-05-11T09:45:04.237 回答