Разность отчетов в wave файле

РоманРоманов

Новичок
Пользователь
Июн 20, 2020
1
0
1
Есть wave файл с двумя каналами. Нужно рассчитать на каждом периоде разницу номеров максимальных отсчетов. Количество отсчетов на периоде равно "частота дискретизации/ частоту колебания(предположим a/b)" обе величины известны. Эту разницу нужно записать в массив, чтобы дальше можно было рассчитать мат ожидание. Т.к. фаза может гулять.
Код:
# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

import wave
import struct
source=wave.open('D:\\ух\\name1.wav', mode='rb')
(nchannels, sampwidth, framerate, nframes, comptype, compname)=source.getparams() #c инэта

#kol-vo frame
#frames_count=source.getnframes()
print('всего отчетов', nframes)
print('колво каналов', nchannels)
print('число байт на сэмпл', sampwidth)
print('чиcло фрэймов в секунду', framerate)
print('тип сжатияу', comptype)
print('имя сжатияу', compname)
data=source.readframes(nframes)  # в скобках frames_count
#print(data[:201])
import numpy as np
types={
       1: np.int8, 
       2: np.int16,
       3: np.int32
       }
samples=np.fromstring(data,dtype=types[sampwidth])
#print(samples)

for n in range(nchannels):       
    channel=samples[n::nchannels] # если два канала нужно "проредить"
    print(channel)
    w=max(channel[0:20]) #максимальное значение для примера 20 отсчетов
    print('maximum', w)
    Nmax=channel[0:20].argmax() #порядковый номер максимального значения
    print('номер максимум с помощью функции' , Nmax)
Сейчас рассчитывается только на одном периоде, и номер максимального записывается в одну переменную, что не дает найти разницу.
 

Вложения

  • 2.jpg
    2.jpg
    34,7 КБ · Просмотры: 3
  • Безымянный.jpg
    Безымянный.jpg
    121,2 КБ · Просмотры: 3

Форум IT Специалистов