`

一个语音的测试

 
阅读更多

2017.12.13

 

      一个关于语音的小作业。

      由于工作的原因,开始接触大量关于语音方面的东西,一个主要的感觉就是见识增长了。下面总结一下一次完成的小作业。 

       wav和pcm文件是最常见的两种音频文件,让我们了解一下它们的区别。

       WAV:是一种无损的音频文件格式,符合PIFF规范。所有的wav都有一个文件头,这个文件头音频流的编码参数。

       PCM:脉冲调制录音。即将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。

       WAV和PCM的关系

       pcm是无损wav文件中音频数据的一种编码方式,但wav 还可以使用其它方式编码。

       wav音频文件的格式:

       wav文件由文件头和采样数据2部分组成。

文件头又分为RIFF、WAVE文件标识段和声音格式说明段组成,各段的起始地址分别由RIFF标识符、以及波形格式标识符(FMT)标定。

       

        这幅图是WAV前 44个字节的意思。一般在进行语音方面的计算时会去掉这44个字节。还想知道更多的话点击链接:http://soundfile.sapp.org/doc/WaveFormat/

        下面是本次的小练习:

         1.给一个wav文件,能读取该音频的采样率,采样精度,声道数等信息。

        2.在1的基础上对语音文件的大小进行计算,并对音频播放的时间也进行计算。

        

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

struct WAV_Format { //定义一个结构体WAV文件
	uint32_t ChunkID;	/* "RIFF" 资源交换文件标志*/
	uint32_t ChunkSize;	/* 从下个地址开始到文件尾的总字节数*/
	uint32_t Format;	/* "WAVE文件标志" */

	/* sub-chunk "fmt" */
	uint32_t Subchunk1ID;	/* "fmt " */
	uint32_t Subchunk1Size;	/* 16 for PCM */
	uint16_t AudioFormat;	/* PCM = 1*/
	uint16_t NumChannels;	/* Mono = 1, Stereo = 2, by tc 通道数,单通道为1,双通道为2 */
	uint32_t SampleRate;	/* 8000, 44100, by tc 采样频率 */
	uint32_t ByteRate;	/* = SampleRate * NumChannels * BitsPerSample/8  波形数据传输速率*/
	uint16_t BlockAlign;	/* = NumChannels * BitsPerSample/8 */	
	uint16_t BitsPerSample;	/* 8bits, 16bits, by tc */

	/* sub-chunk "data" */
	uint32_t Subchunk2ID;	/* "data" */
	uint32_t Subchunk2Size;	/* data size */

	uint32_t FileSize;
	uint32_t Time;//播放时间
}; 

int main(void)
{
	FILE *fp = NULL;
	struct WAV_Format wav;

	fp = fopen("C:\\Users\\admin\\Desktop\\female.wav", "rb");
	if (!fp) {
		printf("can't open audio file\n");
		exit(1);
	}

	fread(&wav, 1, sizeof(struct WAV_Format), fp);

	printf("ChunkID \t%x\n", wav.ChunkID);
	printf("ChunkSize \t%d\n", wav.ChunkSize);//块大小
	printf("Format \t\t%x\n", wav.Format);
	printf("Subchunk1ID \t%x\n", wav.Subchunk1ID);
	printf("Subchunk1Size \t%d\n", wav.Subchunk1Size);
	printf("AudioFormat \t%d\n", wav.AudioFormat);
	printf("NumChannels \t%d\n", wav.NumChannels);
	printf("SampleRate \t%d\n", wav.SampleRate);
	printf("ByteRate \t%d\n", wav.ByteRate);
	printf("BlockAlign \t%d\n", wav.BlockAlign);
	printf("BitsPerSample \t%d\n", wav.BitsPerSample);
	printf("Subchunk2ID \t%x\n", wav.Subchunk2ID);
	printf("Subchunk2Size \t%d\n", wav.Subchunk2Size);

	wav.FileSize = (96000*wav.NumChannels*6)/8;
	printf("数据量是:\t%d B\n",wav.FileSize);
	wav.Time= wav.Subchunk2Size / wav.ByteRate;
	printf("音频播放的时间为:\t%d 秒\n",wav.Time);

	fclose(fp);

	return 0;
}

      结果如下:

       

 

        另外为什么文中使用uint32_t进行定义,主要可以有效的维护代码。

        可以参考博客:http://blog.csdn.net/kiddy19850221/article/details/6655066

        over,去健身房。

        
 
 
  
       
 

  • 大小: 8.1 KB
  • 大小: 4.8 KB
分享到:
评论

相关推荐

    WAV用于百度语音测试文件

    标题“WAV用于百度语音测试文件”指出这个压缩包中的内容主要是一些WAV格式的音频文件,这些文件被设计用于在百度的语音识别或合成系统中进行测试。WAV是一种常见的无损音频文件格式,由微软开发,广泛应用于各种...

    AMR语音测试.amr.zip

    在这个例子中,ZIP文件中只包含了一个名为"AMR语音测试.amr"的文件,这可能是一个用于测试AMR编码解码性能或与微信、钉钉等应用程序接口(API)兼容性的语音样本。 描述中提到“对接微信,钉钉”,这意味着该AMR...

    后缀.wav语音测试文件

    "中国移动通信@10086_20180226201630.wav"这个文件名可能表示这是一个特定场景的录音,比如来自中国移动的客服电话,日期和时间戳则表明录音的具体时间,这在测试中很有价值,因为不同时间和环境下的录音可能具有...

    amr语音测试文件

    要测试AMR语音转换文字功能,首先需要准备一个AMR文件,如"语音测试.amr"。然后,选择一个合适的ASR平台,上传该文件并检查识别结果的准确性和完整性。测试应考虑不同语速、音量、背景噪音、口音等因素,以评估在...

    语音识别测试wav数据集(中文250条英文150条)

    这个压缩包文件名为"语音识别测试wav数据集(中文250条英文150条)",显然提供了一个用于测试语音识别模型的资源,其中包含了250个中文语音样本和150个英文语音样本,所有样本都已统一为wav音频格式。WAV是一种无损...

    语音pcm测试文件专用

    在IT行业中,音频处理是一个重要的领域,特别是在软件开发和测试环节。"语音pcm测试文件专用"这个标题表明,我们关注的焦点是与语音处理相关的PCM(Pulse Code Modulation)测试文件,这些文件通常用于验证和优化...

    标准语音测试包_wav格式_中文_英文.zip

    在这个语音测试包中,每段语音长度超过20秒,这为训练和评估模型提供了足够的数据。长时间的语音片段对于捕捉语句的完整结构和上下文信息至关重要,因为语音识别不仅需要识别单个单词,还需要理解连续的句子和对话的...

    语音聊天测试软件

    良好的语音测试软件应具备回声消除功能,以确保通话双方不会受到干扰。 4. **噪音抑制**:背景噪音可能降低通话质量,测试软件会评估软件在嘈杂环境下的降噪能力。 5. **多路通话**:在多人聊天场景中,测试软件会...

    语音增强测试用例

    在压缩包中,每个子文件可能是一个特定测试场景的录音文件,包含了原始语音和相应的噪声环境。分析这些文件可以帮助我们了解算法在不同环境下的表现,通过对比处理前后的语音质量,可以评估算法的效果。例如,我们...

    语音模块测试工具 20111117.rar

    标题中的“语音模块测试工具 20111117.rar”表明这是一个用于测试语音模块的软件包,发布日期为2011年11月17日。这个工具可能是一个开发人员或质量保证工程师用来验证和调试语音处理硬件或软件组件的工具。 在描述...

    语音测试软件

    在IT领域,语音测试软件是用于验证和优化语音合成技术的重要工具。这类软件的主要目标是确保音频输出的质量、准确性和实时性,同时还能处理与硬件交互的细节,如控制特定的电子元件。在这个案例中,我们关注的是一个...

    简易讯飞语音测试-

    "简易讯飞语音测试-"是一个针对科大讯飞语音API的简单示例项目,旨在帮助开发者快速理解并掌握如何集成和使用讯飞的语音服务。在这个项目中,我们可以学习到以下几个关键知识点: 1. 讯飞语音API:讯飞提供了丰富的...

    语音对讲系统测试.pdf

    1. 语音对讲系统测试的环境配置:测试环境中使用了两台 NP-103A 语音分机、一台 NP-1002 语音主机、两套光端机型号为 HT-4123-2A-1P-8F-1E、型号为 TL-SF1008+ 100M TP-LINK 交换机一台和型号为 TL-SG1008+ 1000M TP...

    500条WAV格式的中文语音数据集,可用于中文语音识别模型的测试集

    该资源是一个包含500个WAV音频文件的中文语音数据集,专为中文语音识别模型的测试而设计。在语音识别领域,这样的数据集至关重要,因为它允许开发人员验证和优化他们的模型性能,确保它们能准确理解并转换中文语音到...

    语音测试例程

    本测试例程专注于“语音测试”,是为初学者准备的一个教程,使用了C#编程语言,并基于Visual Studio 2010开发环境。核心库是Windows自带的System.Speech组件,它提供了Text-to-Speech (TTS) 技术,能够将文本转换为...

    语音测试WAV噪声库.zip

    总的来说,"语音测试WAV噪声库.zip"是一个宝贵的资源,它为音频工程师、软件开发者和研究人员提供了测试和改进语音处理算法的工具。无论是对传统信号处理方法的验证,还是对新型深度学习模型的训练,这个噪声库都能...

    讯飞语音唤醒demo(测试使用)

    这个“讯飞语音唤醒demo(测试使用)”是一个示例程序,旨在帮助开发者理解和实现讯飞语音唤醒功能。 在描述中提到的“实现讯飞语音唤醒功能”,这涉及到以下几个关键知识点: 1. **语音唤醒技术**:语音唤醒是...

    java文本转语音服务语音测试文本

    总的来说,Java文本转语音服务是一个涉及多方面技术的领域,包括自然语言处理、音频信号处理和人工智能。开发者需要对这些技术有一定的理解,并利用合适的库和工具来创建满足需求的TTS应用。同时,不断地测试和优化...

    语音自动识别代码和测试数据

    语音自动识别技术是现代信息技术中的一个重要领域,它涉及到人工智能、信号处理、模式识别等多个方面的知识。这个压缩包文件“语音自动识别代码和测试数据”很可能包含了一套用于开发和评估语音识别系统的资源。 ...

Global site tag (gtag.js) - Google Analytics