আমি কীভাবে অডিও রেকর্ডিংয়ের একটি কর্পাসে সিলেবলের সংখ্যা সনাক্ত করতে পারি তা বোঝার চেষ্টা করছি। আমি মনে করি একটি ভাল প্রক্সি ওয়েভ ফাইলের শিখর হতে পারে।
ইংরেজিতে কথা বলার একটি ফাইল দিয়ে আমি যা চেষ্টা করেছি তা এখানে রয়েছে (আমার আসল ব্যবহারের ঘটনা কিসওয়াহিলিতে রয়েছে)। এই উদাহরণ রেকর্ডিংয়ের প্রতিলিপিটি হ'ল: "এটি আমি টাইমার ফাংশনটি ব্যবহার করার চেষ্টা করছেন I'm আমি বিরতি, ভোকালাইজেশন খুঁজছি" " এই উত্তরণে মোট 22 টি সিলেবল রয়েছে।
wav ফাইল: https ://www.roidboxboxss/koqyfeaqge8t9iw/test.wav?dl=0
আর এর seewave
প্যাকেজটি দুর্দান্ত, এবং বেশ কয়েকটি সম্ভাব্য ফাংশন রয়েছে। প্রথম জিনিসগুলি, ওয়েভ ফাইলটি আমদানি করুন।
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
প্রথম জিনিসটি আমি চেষ্টা করেছিলাম timer()
ফাংশন। এটি প্রত্যাবর্তিত জিনিসগুলির মধ্যে একটি হ'ল প্রতিটি কণ্ঠস্বরের সময়কাল। এই ফাংশনটি 7 টি কণ্ঠশক্তি সনাক্ত করে যা 22 টি উচ্চারণের চেয়ে কম short প্লটটির তাত্ক্ষণিক পর্যালোচনা থেকে বোঝা যায় যে ভোকালাইজেশন সিলেবলের সমান নয়।
t <- timer(w, threshold=2, msmooth=c(400,90), dmin=0.1)
length(t$s)
# [1] 7
আমি থ্রোসোল্ড সেট না করেই ফাইপিক্স ফাংশনটি চেষ্টা করেছিলাম। এটি 54 শিখর ফিরে এসেছে।
ms <- meanspec(w)
peaks <- fpeaks(ms)
এই সময়ের পরিবর্তে ফ্রিকোয়েন্সি দ্বারা প্রশস্ততা দেয়। 0.005 এর সমান একটি থ্রোসোল্ড প্যারামিটার যুক্ত করা শব্দটি ফিল্টার করে এবং 23 টি পিকগুলিতে গণনা হ্রাস করে, যা সিলেবলের প্রকৃত সংখ্যার (22) খুব কাছাকাছি।
আমি নিশ্চিত নই যে এটি সর্বোত্তম পন্থা। ফলাফলটি থ্রোসোল্ড প্যারামিটারের মানের সাথে সংবেদনশীল হবে এবং আমাকে ফাইলগুলির একটি বড় ব্যাচ প্রক্রিয়া করতে হবে। সিলেবলের প্রতিনিধিত্বকারী শৃঙ্গগুলি সনাক্ত করতে এটি কীভাবে কোড করবেন সে সম্পর্কে আরও ভাল কোনও ধারণা?
changepoint
প্যাকেজ। সোজা কথায়, পরিবর্তন বিন্দু বিশ্লেষণ পরিবর্তন সনাক্তকরণের উপর দৃষ্টি নিবদ্ধ করে, লিংকযুক্ত উদাহরণটি ট্রেড ডেটার সাথে সম্পর্কিত তবে শব্দটি ডেটাতে এই কৌশলটি প্রয়োগ করা আকর্ষণীয় হতে পারে।