当前位置: 首页 > 编程笔记 >

使用Python(aifc)读写AIFF和AIFC文件

萧丁雨
2023-03-14
本文向大家介绍使用Python(aifc)读写AIFF和AIFC文件,包括了使用Python(aifc)读写AIFF和AIFC文件的使用技巧和注意事项,需要的朋友参考一下

aifc模块中的各种功能为读取和写入AIFF(音频交换文件格式)和AIFF-C文件提供了支持。AIFF格式用于将数字音频样本存储在文件中。其较新版本的AIFF-C具有压缩音频数据的能力

音频文件具有描述音频数据的参数数量。

  • 采样率或帧率:每秒采样声音的次数。

  • 声道数:指示音频是单声道,立体声还是四声道。

  • 帧:每个通道包含一个样本。

  • 样本大小:每个样本的大小(以字节为单位)。

因此,帧由通道*采样字节组成。1秒的音频数据是通道*采样大小*帧速率字节。

aifc模块中定义了以下功能:

aifc.open()

函数将打开AIFF或AIFF-C文件并根据模式返回用于读取/写入音频数据的对象实例。如果必须打开文件以进行读取,则该对象实例必须为'r'或'rb'。当必须打开文件进行写入时,应为“ w”或“ wb”。

具有写模式的对象使用以下功能

aiff()
创建一个AIFF文件。
aifc()
创建一个AIFF-C文件。
setnchannels()
指定音频文件中的声道数。
setsampwidth()
指定音频样本的大小(以字节为单位)。
setframerate()
以每秒帧为单位指定采样频率。
setnframes()
指定要写入音频文件的帧数。
setcomptype()
指定压缩类型。AIFF文件无法进行压缩。支持的压缩类型-b'NONE',b'ULAW',b'ALAW',b'G722'。
setparams()
一次设置以上所有参数。参数是一个由各种参数组成的元组。
writeframes()
将数据写入输出文件。Ť
writeframesraw()
与相似writeframes(),除了音频文件的标头未更新。

以下程序创建一个AIFF文件

import aifc, struct
sampleRate = 44100.0 # hertz
duration = 1.0 # seconds
frequency = 440.0 # hertz
obj = aifc.open('sound.aiff','w')
obj.setnchannels(1) # mono
obj.setsampwidth(2)
obj.setframerate(sampleRate)
for i in range(99999):
value = random.randint(-32767, 32767)
data = struct.pack('<h', value)
obj.writeframesraw( data )
obj.close()

aiff或aiff-c读取对象使用以下功能

getnchannels()
返回音频通道的数量(单声道为1,立体声为2)。
getsampwidth()
返回单个样本的大小(以字节为单位)。
getframerate()
返回采样率(每秒的音频帧数)。
getnframes()
返回文件中音频帧的数量。
getcomptype()
返回一个长度为4的字节数组,描述了音频文件中使用的压缩类型。
getparams()
返回一个namedtuple()(nchannels,sampwidth,framerate,nframe,comptype,compname
readframes()
从音频文件读取并返回下一个nframe帧。
setpos(pos)
寻求指定的帧号。

这些功能可用于可读和可写aiff对象:

倒带()
倒回读取指针。下一个readframes()将从头开始。
告诉()
返回当前帧号。
关()
关闭AIFF文件。调用此方法后,将无法再使用该对象。

示例

以下程序读取aiff文件的属性

import aifc
obj = aifc.open('sound.aiff','r')
print( "Number of channels",obj.getnchannels())
print ( "Sample width",obj.getsampwidth())
print ( "帧率。",obj.getframerate())
print ("Number of frames",obj.getnframes())
print ( "parameters:",obj.getparams())
obj.close()

输出结果

Number of channels 1
Sample width 2
帧率。 44100
Number of frames 99999
parameters: _aifc_params(nchannels=1, sampwidth=2, framerate=44100, nframes=99999, comptype=b'NONE', compname=b'not compressed')
 类似资料:
  • 问题内容: 我有一个包含内容的文件 如何使用Python 阅读? 同样,如果我有 如何data使用Python 写入CSV文件? 问题答案: 以下是一些最小的完整示例,这些示例如何读取CSV文件以及如何使用Python编写CSV文件。 Python 2 + 3:读取CSV文件 Python 之后,的内容data_read是 Unicode和Python 2.X 如果要编写Unicode,则必须安装

  • 本文向大家介绍使用Python读写WAV文件(波形),包括了使用Python读写WAV文件(波形)的使用技巧和注意事项,需要的朋友参考一下 Python标准库中的wave模块是音频WAV格式的便捷接口。该模块中的功能可以将原始格式的音频数据写入对象之类的文件,并读取WAV文件的属性。 如同内置方法一样,文件以“写入”或读取模式打开,但具有wave模块中的功能 wave.open() 此功能打开一个

  • 本文向大家介绍利用python 读写csv文件,包括了利用python 读写csv文件的使用技巧和注意事项,需要的朋友参考一下 1、读文件 csv_reader把每一行数据转化成了一个list,list中每个元素是一个字符串。 2、写文件 读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。 可能遇到的问题:直接使用这种写法会导致文件每一行后面会多一个空行。 解决办法

  • 问题内容: 我在理解将文本写入文件和将文件写入文件时遇到了大脑故障(Python 2.4)。 因此,我在文件f2 中输入我最喜欢的编辑器。 然后: 我在这里不明白什么?显然,我缺少一些至关重要的魔术(或理性)。一种类型的文本文件可以正确转换? 在这里,我真正无法理解的是UTF-8表示法的意义所在,如果你实际上无法让Python识别它的话(如果它来自外部)。也许我应该只将JSON转储字符串,然后使用

  • 本文向大家介绍python使用xlrd和xlwt读写Excel文件的实例代码,包括了python使用xlrd和xlwt读写Excel文件的实例代码的使用技巧和注意事项,需要的朋友参考一下 安装模块 如果使用的是Linux系统,并且安装了pip,可以直接使用pip安装xlrd, xlwt: 也可以从官网下载源代码安装: https://pypi.org/project/xlwt/1.1.2/ htt

  • 问题内容: 如何使用框架有效地从大文件读取并将大数据写入文件。 我工作,并和曾尝试类似如下: 谁能告诉我,如果我的文件大小超过2 GB,我应该遵循相同的步骤吗? 如果大量的书面操作,我想在写作时做类似的事情,该怎么办? 问题答案: 请注意,您可以像示例代码那样简单地用于复制文件,只是速度更快,而且仅一行代码。 否则,如果您已经打开了两个文件通道,则可以使用 将该通道的全部内容传输到该通道。请注意,