首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于PCM文件的torchaudio加载- EfficientConformer

用于PCM文件的torchaudio加载- EfficientConformer
EN

Stack Overflow用户
提问于 2022-09-22 07:21:57
回答 1查看 74关注 0票数 0

我很难解析PCM文件中的音频长度。

EfficientConformer使用LibriSpeechDataset,音频文件格式是flac,但在我的例子中,我使用的是pcm文件。EfficientConformer通过这样的torchaudio提取音频长度

代码语言:javascript
复制
audio_length = torchaudio.load(DATASET_PATH)[0].size(1)

但就我的情况而言,它不适用于PCM文件,所以我尝试了不同的方法。

我所做的

先从下面的代码获取信号

代码语言:javascript
复制
signal = np.memmap(audio_path, dtype='h', mode='r').astype('float32')

if sum(abs(signal)) <= 80:
    raise ValueError('[WARN] Silence file in {0}'.format(audio_path))

return signal / 32767  # normalize audio

然后得到波形

代码语言:javascript
复制
waveform = Tensor(signal).unsqueeze(0).t()

最后在dim(1)中得到大小。

代码语言:javascript
复制
audio_length = waveform.size(1)

但它将打印1保存在终端中。

这是我的PCM数据集信息

files

  • Sampling频率:16000 No

  • 单通道

如何在pcm文件中获取音频长度?

EN

回答 1

Stack Overflow用户

发布于 2022-10-20 14:07:18

如果您使用的是TorchAudio v0.12或更高版本,那么使用torchaudio.io.StreamReader允许直接加载PCM。

参考文献:https://pytorch.org/audio/main/tutorials/streamreader_basic_tutorial.html#headerless-media

代码语言:javascript
复制
s = StreamReader(src=PATH, format="s16le", option={"sample_rate": "16000"})
s.add_basic_audio_stream(frames_per_chunk=-1)
s.process_all_packets()
waveform, = s.pop_chunks
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73810750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档