Ben ses kayıtları bir grup hece sayısını tespit etmek anlamaya çalışıyorum. Bence iyi bir vekil dalga dosyasında zirveler olabilir.
İşte İngilizce konuşan bir dosya ile denedim (gerçek kullanım durumum Kiswahili'de). Bu örnek kaydın transkripti: "Bu benim zamanlayıcı işlevini kullanmaya çalışıyorum. Duraklamalara, seslendirmelere bakıyorum." Bu pasajda toplam 22 hece vardır.
wav dosyası: https://www.dropbox.com/s/koqyfeaqge8t9iw/test.wav?dl=0
seewave
R paket harika ve birkaç olası fonksiyonlar vardır. İlk önce dalga dosyasını içe aktarın.
library(seewave)
library(tuneR)
w <- readWave("YOURPATHHERE/test.wav")
w
# Wave Object
# Number of Samples: 278528
# Duration (seconds): 6.32
# Samplingrate (Hertz): 44100
# Channels (Mono/Stereo): Stereo
# PCM (integer format): TRUE
# Bit (8/16/24/32/64): 16
Denediğim ilk şey işlevdi timer()
. Geri döndüğü şeylerden biri de her seslendirmenin süresidir. Bu işlev, 22 heceden çok kısa olan 7 vokalizasyonu tanımlar. Konuya hızlı bir bakış, seslendirmelerin hecelere eşit olmadığını göstermektedir.
t <- timer(w, threshold=2, msmooth=c(400,90), dmin=0.1)
length(t$s)
# [1] 7
Ayrıca bir eşik ayarlamadan fpeaks işlevini denedim. 54 tepe döndü.
ms <- meanspec(w)
peaks <- fpeaks(ms)
Bu, genliği zaman yerine frekansa göre çizer. 0.005'e eşit bir eşik parametresi eklemek gürültüyü filtreler ve sayıyı gerçek hecelerin sayısına oldukça yakın olan 23 pik'e düşürür (22).
Bunun en iyi yaklaşım olduğundan emin değilim. Sonuç, eşik parametresinin değerine duyarlı olacak ve büyük bir dosya toplu işlemek zorundayım. Heceleri temsil eden zirveleri tespit etmek için bunu nasıl kodlayacağınız hakkında daha iyi fikirler var mı?
changepoint
. Basitçe söylemek gerekirse, değişim noktası analizi değişimin algılanmasına odaklanır , bağlantılı örnek ticaret verileri ile ilgilidir, ancak bu tekniği sağlam verilere uygulamak ilginç olabilir.