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('}') 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 要将Linux中的MP3文件转成数组,可以使用以下步骤: 1. 首先,在Linux系统上安装必要的工具和依赖项。例如,安装FFmpeg工具,它是一个开源的多媒体框架,可以处理音频和视频文件。 2. 打开终端,并导航到存储MP3文件的目录。 3. 使用FFmpeg命令将MP3文件换成一个数组。例如,使用以下命令将文件example.mp3换为数组example_array.txt: ffmpeg -i example.mp3 -f s16le -acodec pcm_s16le example_array.txt 这个命令将MP3文件换为16的线性PCM格式,并将换后的数组以文本文件的形式保存。 4. 等待FFmpeg完成换过程。这可能需要一段时间,取决于MP3文件的大小和系统性能。 5. 换完成后,可以打开生成的文本文件,查看换后的数组。每个元素都代表了音频采样的值。 通过以上步骤,你就可以将Linux中的MP3文件转成数组了。请注意,换后的数组中的元素可能非常庞大,具体取决于原始MP3文件的大小和音频采样率。因此,在处理和使用换后的数组时,可能需要对数组进行适当的处理和压缩。 ### 回答2: 要将Linux系统中的MP3文件换成数组,您可以按照以下步骤进行操作: 1. 首先,您需要安装一个适用于Linux系统的音频处理工具,如FFmpeg。您可以使用命令`sudo apt-get install ffmpeg`来安装FFmpeg。 2. 在安装完成后,通过使用以下命令将MP3文件换为WAV格式: ``` ffmpeg -i input.mp3 output.wav ``` 其中,`input.mp3`是您要换的MP3文件文件名,而`output.wav`是换后的WAV文件文件名。 3. 换完成后,您可以使用Python或其他合适的编程语言来读取WAV文件并将其换为数组。以下是一个示例Python代码片段,显示了如何使用`scipy`库将WAV文件读取为数组: ```python from scipy.io import wavfile sample_rate, data = wavfile.read('output.wav') ``` 通过上述代码片段,`sample_rate`变量将保存采样率,而`data`变量将保存包含音频数据的数组。 4. 最后,您可以使用该数组进行进一步的音频处理或分析。 请注意,MP3是有损压缩格式,换为WAV格式后,可能会损失一些音质。因此,如果您需要保持较高的音质,请考虑使用无损压缩格式,如FLAC。 ### 回答3: 要将Linux上的MP3文件换为数组,可以通过使用Shell脚本或编程语言来实现。 一种常见的方法是使用Shell脚本,以下是一个简单的示例: ```shell #!/bin/bash mp3_directory="/path/to/mp3/directory" mp3_files=() # 遍历目录中的MP3文件,并将它们添加到数组中 for file in $mp3_directory/*.mp3; do mp3_files+=("$file") done # 打印数组内容 for mp3_file in "${mp3_files[@]}"; do echo "$mp3_file" done ``` 在上述示例中,将`mp3_directory`变量设置为包含MP3文件的目录的路径。然后,使用`for`循环遍历该目录中的所有MP3文件,并将它们添加到`mp3_files`数组中。最后,使用另一个`for`循环打印数组中的所有文件路径。 如果您希望使用其他编程语言,例如Python,也可以使用相应的库和模块实现类似的功能。以下是一个使用Python的示例: ```python import os mp3_directory = "/path/to/mp3/directory" mp3_files = [] # 遍历目录中的MP3文件,并将它们添加到列表中 for file in os.listdir(mp3_directory): if file.endswith(".mp3"): mp3_files.append(os.path.join(mp3_directory, file)) # 打印列表内容 for mp3_file in mp3_files: print(mp3_file) ``` 在这个示例中,首先导入`os`模块,然后设置`mp3_directory`变量为包含MP3文件的目录的路径。然后,使用`os.listdir`函数遍历目录中的所有文件,并通过检查文件扩展名是否以`.mp3`结尾来筛选出MP3文件。最后,将它们添加到`mp3_files`列表中,并使用`for`循环打印列表中的所有文件路径。 无论是使用Shell脚本还是编程语言,以上的示例都可以将Linux上的MP3文件换为数组
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值