WAV 文件转成数组

因在NBM3108/XVF3000中加入开机提示音, 需用把wav文件转成数组,  步骤如下:

1. 用audacity 打开wav文件. 设置采样率为8KHz, 单声道, 然后导出音频, 得到8K/16bit的wav 文件;

2. 用下面的wav2txt.py 生成PCMdata8K16bit.h 文件. 文件中定义了一个 int16_t tonePCM_8KHz16bit[] 数组, 数组元素对应wav 的sample 值.  打开该文件, 把数组前后为0或很小的元素删除, 这样占内存小一点.

3. 把PCMdata8K16bit.h 复制到工作目录, 在程序中加入 #include <CMdata8K16bit.h>. 这样在程序中就可直接引用tonePCM_8KHz16bit[] 数组了.

wav2txt.py 程序源码:


import wave
import numpy as np
import sys
 
wavefile = "Windows Information Bar8k.wav"
textfile = "PCMdata8K16bit.h"
f = wave.open(wavefile, 'rb' )
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
 
print(nchannels)
print(sampwidth)
print(framerate)
print(nframes)
 
Data_str = f.readframes(nframes)
Data_num = np.frombuffer(Data_str,dtype=np.int16)

datalist = list(Data_num);
f.close()

with open(textfile, 'w+') as outFile:
    outFile.write("#include <stdint.h>\n")
    outFile.write("int16_t tonePCM_8KHz16bit[] = {")
    for index, item in enumerate(datalist):
        outFile.write(str(item))
        outFile.write(',')
    outFile.write('0')
    outFile.write('}') 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值