R спектрограмма базы на основе амплитудных данных волны

В R, если я хотел бы построить спектрограмму из волны, это выглядит следующим образом:

>library(sound)
>library(tuneR)
>library(seewave)
>s1<-readWave('sample1.wav')
>spectro(s1,main='s1')
>str(s1)
 Formal class 'Wave' [package "tuneR"] with 6 slots
  ..@ left     : int [1:312000] 2293 2196 1964 1640 1461 1285 996 600 138 -195 ...
  ..@ right    : num(0) 
  ..@ stereo   : logi FALSE
  ..@ samp.rate: int 8000
  ..@ bit      : int 16
  ..@ pcm      : logi TRUE

Но что, если у меня просто есть data.txt как

2293 2196 1964 1640 1461 1285 996 600 138 -195 ...

Что я должен положить в spectro функционировать? spectro(wave, f, ...), wave Говорят, что an R object, Или я должен использовать других, чтобы получить сюжет? Я старался

>s_1<-read.table("s_1.txt", sep=" ")
>spectro(s_1,f=8000)
Error in filled.contour.modif2(x = X, y = Y, z = Z, levels = collevels,  :
no proper 'z' matrix specified

и закончился с ошибкой. Спасибо.

1 ответ

Я согласен, что документация немного туманная.

Я считаю, что он пытается сказать, что первым аргументом должен быть объект Wave. Вы можете преобразовать числовой вектор в объект Wave, используя TuneRWave() функция.

v <- runif(5000, -2^15, 2^15-1)
v.wav <- Wave(v, samp.rate=8000, bit=16)

spectro(v.wav)

Мне не удалось установить seewave на моем текущем компьютере, поэтому я проверил это на старом компьютере с программным обеспечением пару лет назад. Я не могу гарантировать, что этот пример будет работать.

Другие вопросы по тегам