使用音频分析工具audacity分析wave文件

下载安装

audacity也有ubuntu版本,通过命令sudo apt install audacity安装

startup.wav文件内容

波形

wave格式:

wav 格式,是微软开发的一种文件格式规范,整个文件分为两部分,第一部分是“文件头”,记录重要的参数信息,对于音频而言,就包括:采样率、通道数、位宽等等;第二部分是“数据块”,即一帧一帧的二进制数据,对于音频而言,就是原始的 PCM 数据。所以wav格式 = Header(44 bytes) + data

下图的前44个字节表示wave文件头

wave文件头的数据类型是:

data数据区PCM数据格式:

解析代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct WaveHeader{
    int riff_id;
    int riff_sz;
    int riff_fmt;
    int fmt_id;
    int fmt_sz;
    short audio_fmt;
    short num_chn;
    int sample_rate;
    int byte_rate;                                                                                                                                                                                          
    short block_align;
    short bits_per_sample;
    int data_id;
    int data_sz;
} WaveHeader;

int main(void)
{
	FILE *stream;
	WaveHeader wh;

	memset(&wh, 0x00, sizeof(wh));

	printf("sizeof(WaveHeader) = %ld.\n", sizeof(WaveHeader));

	if((stream=fopen("startup.wav","ro"))==NULL)
	{
		fprintf(stderr,"Can not open file.\n");
		return 0;
	}
	printf("open success.\n");

	fseek(stream, 0, SEEK_SET);

	fread(&wh,1,sizeof(wh),stream);

	fclose(stream);
	
	printf("riff_id %d,\n" \
			"riff_size %d\n" \
			"num_chn %d.\n" \
			"sample_rate %d.\n" \
			"byte_rate %d.\n" \
			"block_align %d.\n" \
			, wh.riff_id, wh.riff_sz, wh.num_chn, wh.sample_rate, wh.byte_rate, wh.block_align);

	return 0;
}

同理,将PCM文件转换为WAVE格式,其实就是在PCM前面加上了44个字节的头.

结束!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值