TDMS文件转换为wav文件

    利用声阵列设备对变电设备进行声纹检测时,收到的文件往往时tdms文件,使用常规的音视频播放工具无法正常播放,也无法查看文件信息,这时就需要利用一些工具进行特殊处理,将其转换为wav文件,然后再进行音频处理。


1 TDMS文件

    TDMS(Technical Data Management Streaming)文件是NI主推的一种二进制记录文件,它兼顾了高速、易存取和方便等多种优势,能够在NI的各种数据分析或挖掘软件之间进行无缝交互,也能够提供一系列API函数供其它应用程序调用。

    TDMS的逻辑结构有三层:第一层为文件(File),第二层为通道组(Channel Groups),最后是通道(Channels),每一个层次上都可以附加特定的属性(Properties)。

2 利用excel查看tdms文件数据

    首先,我们可以使用excel读取tdms文件,使用excel读取tdms文件时需要安装ni-tdm-excel-addin_21.3.0_offline.iso插件,然后打开excel时工具栏会出现加载项,选择加载项打开需要读取的tdms文件即可。

    tdms文件过大时需要缓冲一段时间,耐心等待缓冲完成,打开后结构如下:

3 python读取

需要安装nptdms插件,在终端执行命令pip install npTDMS即可。

3.1 首先引入所需第三方库

import matplotlib.pyplot as plt

from nptdms import TdmsFile

import numpy as np

import pandas as pd

3.2 创建TdmsFile对象,并使用open读取文件元数据

TDMS文件需要一层一层读取,先读取文件,然后读取组名,之后用组名作为索引读取通道名,最后可以用通道名作为索引读取通道数据。


with TdmsFile.open(r'文件的路径') as tdms_file:
    for group in tdms_file.groups():      # TdmsFile可以按组名索引来访问TDMS文件中的组,使用groups()方法直接访问所有组        
        group_name = group.name      
        print(group_name)
    for channel in group.channels():      # TdmsGroup 可以通过通道名称来索引来访问这个组中的一个通道,使用 channels()方法直接访问所有通道        
        channel_name = channel.name  
        print(channel_name)

3.3 读取通道

channel = tdms_file[group_name][channel_name]  # 根据索引读取通道
all_channel_data = channel[:] # 将此通道中所有的数据作为numpy数组获取
num = np.array(all_channel_data)
df = pd.DataFrame(num) # 将numpy数组中的数据转换成DataFrame并输出
print(df[:][1:])
print(df.shape)                                # 维度查看

3.4 用Matplotlib将该数据进行可视化

part_channel_data = channel[1:100]           # 取部分数据进行分析,这里取的是1到100的数据
a = np.array(part_channel_data)              # 用数据大小作为y轴
x = np.arange(1, 100)                        # 定义x轴范围
plt.figure(figsize = (20, 8), dpi = 80)      # 设置界面大小
plt.plot(x, a, ‘k’)                          # 设置x,y轴和曲线的颜色,k为黑色    
plt.xlabel(‘intensity’)                      # 设置x标签
plt.xticks(x[::10])                          # 设置x轴每个下标的间隔
plt.title('name')                            # 设置标题名称
plt.show()                                   # 输出数据图像

3.5 将音频数据保存为wav格式

data = num
framerate = 48077
nchannels = 1
sampwidth = 2
name = "./"+ channel_name +".wav"
save_wav(data, framerate, nchannels, sampwidth, name)

  执行以上操作可将tdms文件转换为wav文件,后续即可进行wav音频文件的数据处理

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值