會寫這篇小廢文主要是因為,因緣際會下找到 tuneR 和 seewave 這2個package,赫然發現原來去年(2017)就已經有大神為音樂串流資料寫了套件,供廣大分析愛好者可直接讀進音訊檔,並以 “Wave” 這種 Object 作存取,方便大家進行分析。結果問了谷歌大神;發覺國外只有寥寥可數幾篇有在分享這2個套件的使用,然後找中文(繁體)竟一無所獲,頓時靈光一閃 ! 反正也沒有人寫嘛 ~ 正所謂 “前無古人” …“後來者可亂寫”XD 那乾脆我就稍微來玩一玩這個package(tuneR),把亂玩的心得分享一下 ! 多少騙些分析師入坑,後續廢材我才有機會找到神文分享啊~(踹飛)
getwd()
## [1] "C:/Users/USER/Documents"
library(tuneR)
track1 <- readMP3("Honey Lemon.mp3")
class(track1)
## [1] "Wave"
## attr(,"package")
## [1] "tuneR"
track1
##
## Wave Object
## Number of Samples: 2939904
## Duration (seconds): 66.66
## Samplingrate (Hertz): 44100
## Channels (Mono/Stereo): Stereo
## PCM (integer format): TRUE
## Bit (8/16/24/32/64): 16
嗚~ ~ ~這到底是什麼東西…看不懂啦
沒關係 ! 問谷歌大神 ~
大神有解:
聲道: 分單音(Mono)及立體聲(Stereo,兩聲道)。一般常見為CD音質(44,100Hz, 16bits, Stereo) !
所以,根據谷歌大神,我們大概可以知道
## [1] "聲音檔大小=取樣頻率(Hz) × 樣本大小(bits) × 聲道數 × 秒數"
Data
44100 * 16 * 2 * 66.66 / 8 / 1024 / 1024 * 2
## [1] 22.42818
從 Channels 可以知道 track1 是 stereo(雙聲道)
left : 為左聲道
right : 為右聲道
左右長度一定是等長的
P.S 由於 tuneR 是屬於 S4 的class,所以記得 $ -> @ 喔!
signal_vector_1 <- track1@left
44100 * 23
## [1] 1014300
signal_vector_1 <- signal_vector_1[1014301:length(signal_vector_1)] # 把前面22秒部分剪掉
track1@left <- signal_vector_1 # 會有Error不必理會,因為是雙聲道的關係,會要求左右必須是等長的,等下一行執行完後就不會有問題了
track1@right <- signal_vector_1
44100 * 25
## [1] 1102500
signal_vector_1 <- signal_vector_1[1:1102500] # 把第25秒後的部分剪掉
track1@left <- signal_vector_1
track1@right <- signal_vector_1
# play(track1)
來試聽看看 連結
track2 <- readMP3("The bold and the beautiful.mp3")
signal_vector_2 <- track2@left
44100 * (60 + 59)
## [1] 5247900
signal_vector_2 <- signal_vector_2[5247901:length(signal_vector_2)] # 把前面1分58秒部分剪掉
track2@left <- signal_vector_2 # 一樣 ! 會有Error不必理會,因為是雙聲道的關係,會要求左右必須是等長的,等下一行執行完後就不會有問題了
track2@right <- signal_vector_2
44100 * 24
## [1] 1058400
signal_vector_2 <- signal_vector_2[1:1058400] # 把第24秒後的部分剪掉
track2@left <- signal_vector_2
track2@right <- signal_vector_2
# play(track2)
來試聽看看 連結
track3 <- track1
signal_vector_3 <- c(signal_vector_1,signal_vector_2)
track3@left <- signal_vector_3 # Error...應該不用再打1次了啦
track3@right <- signal_vector_3
Picture
喔喔 ~ 看這Data和Values顯示的結果,好像可以耶 !
趕緊來試聽看看 連結
以上版權非我個人所有 客官要翻我也不會bird you 翻到千里之外才是我的本意