আমি এক ধরণের নড়বড়ে উপায় পেয়েছি যে এই ধরণের সমস্যাটি সমাধান করে।
আমি লক্ষ্য করেছি যে যখন নীরবতা শনাক্ত করা যায়, তখন আরও শব্দ না শোনার আগে পর্যন্ত স্বাভাবিকভাবেই ফাইলটিতে আরও কিছু যুক্ত করা যায় না। তাই আমি স্থির করেছিলাম যে আমি চেষ্টা করতে পারি এবং এই সত্যটির সুবিধা নিতে পারি।
প্রথমত, আমি পটভূমিতে sox এর শব্দ রেকর্ডার শুরু করি:
rec /tmp/recording.flac rate 32k silence 1 0.1 3% -1 3.0 3% &
এরপরে আমি রেকর্ডিং প্রক্রিয়ার পিআইডি পেয়ে যাব: p=$!
তারপরে আমি রেকর্ডিংয়ের প্রক্রিয়াটি শুরু করে শেষ করতে দ্বিতীয়টি দিয়েছি এবং তারপরে ফাইলটি বড় হওয়া শুরু হওয়া পর্যন্ত অপেক্ষা করুন।
ঘুম 1
["$ var1"! = "$ var2"] অবধি; করা
var1 = `du" /tmp/rec રેકોર્ડ.flac "` `
ঘুম 1
var2 = `du" /tmp/rec રેકોર્ડ.flac "` `
সম্পন্ন
এই লুপটি বিরতির পরে, এর অর্থ হ'ল শব্দটি সনাক্ত করা হয়েছে। সুতরাং এখন আমি ফাইলটিতে ডেটা যুক্ত হওয়া বন্ধ না হওয়া পর্যন্ত অপেক্ষা করার জন্য আরেকটি লুপ তৈরি করি (এটি একবার সোেক্স আবার নীরবতা সনাক্ত করে।
প্রতিধ্বনিত "শব্দ সনাক্ত করা"
["$ var1" == "$ var2"] অবধি; করা
var1 = `du" /tmp/rec રેકોર્ડ.flac "` `
ঘুম 0.5
var2 = `du" /tmp/rec રેકોર્ડ.flac "` `
সম্পন্ন
এখন আমার কেবল প্রস্থান করা দরকার rec
:
প্রতিধ্বনি "নিরবতা সনাক্ত করা"
হত্যা $ পি
এবং এটাই. এখানে সম্পূর্ণ স্ক্রিপ্ট:
rec /tmp/rec રેકોર્ડ.flac হার 32 কে নীরবতা 1 0.1 3% -1 3.0 3% &
পি = $!
ঘুম 1
["$ var1"! = "$ var2"] অবধি; করা
var1 = `du" /tmp/rec રેકોર્ડ.flac "` `
ঘুম 1
var2 = `du" /tmp/rec રેકોર્ડ.flac "` `
সম্পন্ন
প্রতিধ্বনিত "শব্দ সনাক্ত করা"
["$ var1" == "$ var2"] অবধি; করা
var1 = `du" /tmp/rec રેકોર્ડ.flac "` `
ঘুম 0.5
var2 = `du" /tmp/rec રેકોર્ડ.flac "` `
সম্পন্ন
প্রতিধ্বনি "নীরবতা সনাক্ত"
হত্যা $ পি
এখন আমি এটি করার জন্য আরও ভাল, আরও স্থিতিশীল উপায়ে পছন্দ করব তবে এটি আপাতত কাজ করতে হবে।