【问题标题】:Find the higher value of a .wav [duplicate]查找 .wav 的较高值 [重复]
【发布时间】:2013-10-30 20:42:51
【问题描述】:

我正在尝试找出哪个是 wav 文件的最高值。首先我读取 wav,然后找到最大值的样本,但现在我需要知道那个值是哪个值。我无法上传 wav 文件,但您可以与任何人一起尝试。

import matplotlib.pyplot as plt
import numpy as np
import wave
import sys


spf1 = wave.open('C:/Users/Martinez/Documents/Diego/Facultad/Proyecto Final/Mediciones Cubo/5 sentado/Lado 1_5 sentado.wav','r')

#Extract Raw Audio from Wav File
signal1 = spf1.readframes(-1)
signal1 = np.fromstring(signal1, 'Int16')

fs1 = spf1.getframerate()

#If Stereo
if spf1.getnchannels() == 2:
    print 'Just mono files'
    sys.exit(0)
#print np.arange(signal)
m_x = abs(signal1).argmax()
m_y = abs(signal1).max()

print m_x
print m_y

Time=np.linspace(0, len(signal1)/float(fs1), num=len(signal1))

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.vlines(Time[m:], [0], abs(signal1)[m:] )
#ax1.plot(Time[m:], abs(signal1[m:]), 'r')
ax1.grid(True)
ax1.axhline(color='black', lw=2)

plt.show()

【问题讨论】:

  • 试试print max(signal1)
  • 情节可以骗人,打印最大的10个像signal1.sort(); print signal1[-10:]
  • 是的,我按照你说的对数组进行排序,看起来最大值是6025。

标签: python numpy wav


【解决方案1】:

如果signal1 是数字的可迭代对象(或任何可排序的对象),那么max(signal1) 将为您提供最大值。如果您需要将这些项目转换为数字,请使用 key 参数:max(signal1, key=abs)

【讨论】:

  • 是的,考虑到 + 和 - 值,它是最大的,绝对值是 6929,这样做:abs(signal1).max(),对吗?
  • @DiegoMartínezGiardini (a) 不,你错了,正确的用法正如我所展示的那样 (b) 你的 python 解释器会在你输入时告诉你是否正确。跨度>
猜你喜欢
  • 2021-03-05
  • 1970-01-01
  • 2021-09-02
  • 2021-04-11
  • 2019-12-06
  • 2016-10-06
  • 1970-01-01
  • 2021-02-20
相关资源
最近更新 更多