অডিও খামগুলি কোথায় শুরু হয় এবং বন্ধ হয় তা সনাক্ত করার সহজ উপায়


43

নীচে একটি সংকেত দেওয়া হয়েছে যা কারও সাথে কথা বলার রেকর্ডিং উপস্থাপন করে। আমি এর উপর ভিত্তি করে ছোট ছোট অডিও সিগন্যাল তৈরি করতে চাই। ধারণাটি 'গুরুত্বপূর্ণ' শব্দটি কখন শুরু হয় এবং শেষ হয় তা সনাক্ত করা হয় এবং চিহ্নিতকারীদের অডিওর নতুন স্নিপেট তৈরি করতে এটি ব্যবহার করে। অন্য কথায়, আমি কখনই কোনও অডিও 'অংশ' শুরু বা বন্ধ হয়ে যায় এবং এর ভিত্তিতে নতুন অডিও বাফার তৈরি করে তা হিসাবে নির্দেশক হিসাবে নীরবতাটি ব্যবহার করতে চাই।

সুতরাং উদাহরণস্বরূপ, যদি কোনও ব্যক্তি নিজেকে বলার রেকর্ড করে

Hi [some silence] My name is Bob [some silence] How are you?

তারপরে আমি এ থেকে তিনটি অডিও ক্লিপ তৈরি করতে চাই। একটি যে বলে Hi, একটি যা বলে My name is Bobএবং যা বলে How are you?

আমার প্রাথমিক ধারণাটি অডিও বাফারের মাধ্যমে নিয়মিত যাচাই করা উচিত যেখানে কম প্রশস্ততার ক্ষেত্র রয়েছে। হতে পারে আমি প্রথম দশটি নমুনা গ্রহণ করে এটি করতে পারব, মানগুলি গড় করুন এবং ফলাফল যদি কম হয় তবে এটিকে নীরব হিসাবে লেবেল করুন। আমি পরবর্তী দশটি নমুনা যাচাই করে বাফারে নামব। এই পথে বর্ধন করে আমি সনাক্ত করতে পারি যে খামগুলি কোথায় শুরু হয় এবং বন্ধ হয়।

কারও কাছে যদি কোনও ভাল, তবে সাধারণ উপায় সম্পর্কে কোনও পরামর্শ থাকে তবে তা দুর্দান্ত। আমার উদ্দেশ্যে সমাধান করতে বেশ প্রাথমিক হও।

আমি ডিএসপিতে প্রো না, তবে কিছু প্রাথমিক ধারণাটি বুঝতে পারি। এছাড়াও, আমি এই প্রোগ্রামটিমেটিভভাবে করব তাই অ্যালগরিদম এবং ডিজিটাল নমুনাগুলি সম্পর্কে কথা বলা ভাল।

সব ধরনের সাহায্য করার জন্য ধন্যবাদ!

এখানে চিত্র বর্ণনা লিখুন


সম্পাদনা 1

এখন পর্যন্ত দুর্দান্ত প্রতিক্রিয়া! কেবল এটি স্পষ্ট করে বলতে চেয়েছিলেন যে এটি লাইভ অডিওতে নেই এবং আমি সি বা অবজেক্টিভ-সিতে নিজেই অ্যালগরিদমগুলি লিখব তাই লাইব্রেরি ব্যবহার করা কোনও সমাধান আসলেই কোনও বিকল্প নয়।


1
দেখে মনে হচ্ছে আপনি ব্রেক পয়েন্ট হিসাবে সময়কালের জন্য নীরবতা ব্যবহার করে এটি ভেঙে দেওয়ার চেষ্টা করছেন। কেন কেবল "নীরবতা" নির্ধারণের জন্য পাওয়ার থ্রোসোল্ডিং ব্যবহার করবেন না, এবং বিরতির গঠনের জন্য এটি যথেষ্ট দীর্ঘ কিনা তা নির্ধারণ করার জন্য একটি প্রান্তিক সময় থাকবে?
জিম ক্লে

@ জিমক্লে হ্যাঁ, আমি ঠিক তাই করার চেষ্টা করছি। আমি পাওয়ার থ্রোহোল্ডিংয়ের কথা কখনও শুনিনি, তবে এটি এমন কিছু ব্যবহার করছে যা আমি ব্যবহার করতে পারি। এটা কি জটিল? আপনি কি কিছুটা প্রসারিত করতে পারেন?
এরিক ব্রোটো

@ এরিকব্রোটো সম্ভবত আপনার গ্রন্থাগারগুলিতে আপনার কী কী ক্ষমতা রয়েছে তা সম্পর্কে আমাদের কিছুটা বলা উচিত। এটি আমাদের জন্য আপনার জন্য প্রকৃত পদ্ধতিটি আরও ভালভাবে ম্যাসেজ করার অনুমতি দেবে।
স্পেসি

নীরবতা সনাক্তকরণের জন্য এই পদ্ধতিটি আরও ভাল ?? ০.০৫ x = ওয়াভারড ('s1.wav') ব্যতীত থার্ডোল্ডের স্তরটি কী হওয়া উচিত; i = 1; যখন অ্যাবস (x (i)) <0.05% নীরবতা সনাক্তকরণ i = i + 1; শেষ x (1: i) = []; x (6000: 10000) = 0;
জী

উত্তর:


26

এটি স্পিচ সনাক্তকরণের ক্লাসিক সমস্যা । প্রথমে করণীয় হ'ল গুগলের ধারণাটি। এটি ডিজিটাল যোগাযোগের ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয় এবং বিষয়টি নিয়ে প্রচুর গবেষণা হয়েছিল এবং সেখানে ভাল কাগজপত্র রয়েছে।

সাধারণত, আপনার বক্তৃতা সনাক্তকরণের পদ্ধতিটি আরও বিস্তৃতর সাথে মোকাবেলা করতে হবে background যদি আপনি একটি শান্ত ঘরে নেওয়া রেকর্ডিং ব্যবহার করেন তবে আপনি এটি খুব সহজেই (আরও পরে) করতে পারেন। কেউ কথা বলার সময় যদি আপনার কাছে সমস্ত ধরণের শব্দ হয় (ট্রাকগুলি পাশ দিয়ে চলে যাওয়া, কুকুরের ছোঁড়া, প্লেটগুলি ধড়ফড় করা, এলিয়েনরা আক্রমণ করছে), আপনাকে আরও কিছু চালাক ব্যবহার করতে হবে।

আপনি সংযুক্ত তরঙ্গরূপটির দিকে তাকিয়ে আপনার শব্দটি ন্যূনতম, সুতরাং আমি নিম্নলিখিতটি প্রস্তাব করছি:

  1. সিগন্যাল খামটি বের করুন
  2. একটি ভাল থ্রেশহোল্ড চয়ন করুন
  3. খামের পরিমাণের প্রান্তটি ছাড়িয়ে গেছে এমন স্থানগুলি সনাক্ত করুন

এই সব এর অর্থ কি? একটি সংকেতের একটি খাম একটি বক্ররেখা যা সময়ের সাথে সাথে এর প্রস্থতা বর্ণনা করে, তার ফ্রিকোয়েন্সি সামগ্রী কীভাবে এটি দোলায় পরিণত করে তা স্বাধীনভাবে (নীচের চিত্রটি দেখুন)।

এখানে চিত্র বর্ণনা লিখুন

{1,45,6,2,43,2}{1,45,6,2,43,2} পরীক্ষামূলকভাবে পাওয়া যেতে পারে এবং আপনার নমুনা হারের মতো কয়েকটি বিষয়ের উপর নির্ভর করতে পারে।

আপনি চিত্রটি থেকে দেখতে পারেন যে আপনার কাছে খুব বেশি শব্দ নেই, আপনার সিগন্যাল খামটি সর্বদা একটি নির্দিষ্ট প্রান্তিকের (উচ্চতা স্তরের) উপরে থাকবে এবং আপনি সেই অঞ্চলগুলি স্পিচ সনাক্তকারী অঞ্চল হিসাবে বিবেচনা করতে পারেন ।


3
আমি আসলে এটি গুড'আল উইন্যাম্পের অন্যতম প্লাগইন হিসাবে প্রয়োগ করেছি। আপনি যা বর্ণনা করছেন তা ভাল তবে পর্যাপ্ত নয়। সাধারণত সেখানে কণ্ঠস্বর (স্বর) এবং অপ্রচলিত শব্দ (উপাদান) থাকে) যদি এখানে কেবল কণ্ঠস্বর পাওয়া যায় তবে আপনি যা বর্ণনা করছেন তা কাজ করবে - তবে উদ্বেগিত শব্দটি খুব কম শক্তি এবং এগুলি সাধারণ শব্দ থেকে খুব আলাদা নয় isha স্টুডিওগুলিতে এমনকি শোরগোলের শর্তগুলি খুব বিরল।
দিপান মেহতা

অজগর এ কীভাবে অর্জন করবেন?
কেরাজী আর

26

আপনি যা করতে চান তা মূলত ভয়েস ক্রিয়াকলাপ সনাক্তকরণ বা স্পিচ সনাক্তকরণ হিসাবে ডাকা হয় ।

মূলত কোনও খাঁটি স্পিচ সিগন্যালের (যার কোনও সংগীত নেই) এর তিনটি অংশ থাকে।

  1. স্বরযুক্ত শব্দ - যা মূলত স্বর দ্বারা সৃষ্ট
  2. উদ্বেগযুক্ত শব্দ - এতে ব্যঞ্জনবর্ণ রয়েছে।

মানুষের শব্দের বৈশিষ্ট্যটি এমন যে ভয়েসড সাউন্ডে প্রচুর শক্তি ব্যবহৃত হয় তবে আসল তথ্যটি ব্যঞ্জনায় অন্তর্ভুক্ত থাকে। এছাড়াও, ভয়েসড সাউন্ডটি সাধারণত কম ফ্রিকোয়েন্সি যেখানে অচলিত শব্দ উচ্চ ফ্রিকোয়েন্সি হয়। [সুনির্দিষ্টভাবে বলতে গেলে সমস্ত স্বরযুক্ত শব্দটি কোনও প্রদত্ত ব্যক্তির জন্য কমপক্ষে একটি ধ্রুবক ফ্রিকোয়েন্সি অনুরণিত হয় যা তার পিচ]।

এখন, কোনও সিস্টেম হিসাবে শব্দ আছে। ভয়েসড শব্দটি সাধারণত যথেষ্ট শক্তিশালী যে এটি দৃশ্যমান হিসাবে চিহ্নিত করা যায়। আপনি যখন একটি কম ফ্রিকোয়েন্সি ফিল্টারিং প্রয়োগ করেন তখন কণ্ঠস্বরগুলির ভাল মাত্রা সংগ্রহ করা সম্ভব হয়, তবে উদ্রেক করা শব্দ (সমস্ত সমৃদ্ধ তথ্য সহ) হারিয়ে যাবে।

কীভাবে এটি সমাধান করবেন প্রশ্নে আসছে:

কৌশলটি নিখুঁতভাবে নিহিত যে উদ্বেগিত শব্দ এখনও একটি অনুরণনকারী উত্স থেকে আসে; এবং সহজাতভাবে একটি নির্দিষ্ট ফ্রিকোয়েন্সি উপর সীমিত। যেখানে যেমন শোরগোল বরং অভিন্ন। সুতরাং একটি সহজ পরিমাপ যা তিনটিই আলাদা করে "স্থানীয় শক্তি" বা বিকল্পভাবে কিন্তু সমতুল্য হ'ল উইন্ডোড অটো-পারস্পরিক সম্পর্ক।

আপনি যদি একবারে 100 টি নমুনা নেন - এবং স্বয়ংক্রিয়ভাবে নিজেকে সংযুক্ত করুন, যদি এটিতে কেবল শব্দ থাকে তবে ফলাফলগুলি বেশিরভাগ শূন্য হবে (এটি সাদা শব্দের সম্পত্তি) যেখানে বক্তৃতা সংকেত হিসাবে, এই মাত্রাটি পর্যবেক্ষণযোগ্য হবে কারণ সংকেত এখনও আরও ভাল কাঠামো আছে। এটি অতীতে আমার পক্ষে কাজ করেছে।

ভিএডি একটি সক্রিয় গবেষণার ক্ষেত্র ছিল - কারণ প্রায় সমস্ত মোবাইল ফোন যোগাযোগগুলি বাকরুদ্ধ অংশটি সনাক্ত করতে এবং এটিকে এনকোডিং থেকে সরাতে চায়। তবে তারা যদি অ-স্বরযুক্ত বক্তব্য সরিয়ে দেয় তবে এটি টেলিফোনিকে অকেজো করে দেবে।

G.729 স্ট্যান্ডার্ড ভিডিএকে এই জাতীয় বৈশিষ্ট্যগুলির উপর ভিত্তি করে গণনা করে: লাইন বর্ণালী ফ্রিকোয়েন্সি, পূর্ণ-ব্যান্ড শক্তি, লো-ব্যান্ড শক্তি (<1 কেএইচজেড) এবং শূন্য-ক্রসিং হার features

জিএসএম স্ট্যান্ডার্ড নীচের হিসাবে কাজ করে: বিকল্প 1টি নয়টি ব্যান্ডে এসএনআরকে গণনা করে এবং এই মানগুলির একটি প্রান্তিক প্রয়োগ করে। বিকল্প 2 বিভিন্ন পরামিতি গণনা করে: চ্যানেল শক্তি, ভয়েস মেট্রিক্স এবং শব্দ শক্তি। এরপরে এটি একটি থ্রোসোল্ড ব্যবহার করে ভয়েস মেট্রিকগুলিকে প্রান্তিক করে তোলে যা আনুমানিক এসএনআর অনুযায়ী পরিবর্তিত হয়। (উইকিপিডিয়া থেকে)

আরও উন্নত প্রযুক্তির জন্য আমি এই বিষয়ে কিছু তথ্য উল্লেখ করছি।

  1. সর্বাধিক দর্শনীয় রেফারেন্স: জংসিও সোহন; নাম সু কিম; ওয়নিং সং; "একটি পরিসংখ্যানের মডেল-ভিত্তিক ভয়েস ক্রিয়াকলাপ সনাক্তকরণ" সংকেত প্রসেসিং লেটারস, আইইইইই, জানুয়ারী 1999, খণ্ড: 6 ইস্যু: 1 পিপি: 1-3

  2. আপনার জন্য সর্বাধিক প্রাসঙ্গিক: মার্ক মারজিনজিক এবং বার্জার কলমিয়ের "পাওয়ার এনভেল্ফের ডায়নামিক্স ট্র্যাকিংয়ের মাধ্যমে নয়েজ স্পেকট্রাম অনুমানের জন্য স্পিচ বিরতি সনাক্তকরণ" স্পিচ এবং অডিও প্রসেসিং, আইওএল-এর আইইইই ট্রানসেকশনস। 10, কোন। 2, ফেব্রুয়ারী 2002 pp.109

  3. রামরেজ, জে .; জে এম গরিরিজ, জে সি সেগুরা (2007)। "ভয়েস ক্রিয়াকলাপ সনাক্তকরণ Fund মৌলিক এবং স্পিচ সনাক্তকরণ সিস্টেম দৃust়তা" " এম গ্রিম এবং কে ক্রসচলে In শক্তিশালী স্পিচ স্বীকৃতি এবং বোঝার। পৃষ্ঠা 1-22। আইএসবিএন 978-3-902613-08-0।

  4. ভূমিকা: জোনাথন কোলা, ক্যারল এসপি-উইলসন এবং তরুণ প্রুথী "ভয়েস ক্রিয়াকলাপ সনাক্তকরণ"


অজগর এ কীভাবে অর্জন করবেন?
kRazzy আর

9

আমি তার পদ্ধতির উপর জিম ক্লেকে পুরোপুরি দ্বিতীয় করে দেব, তবে খামটি ব্যবহার করে স্বাদে কিছুটা পরিবর্তন করতে হবে:

আমরা জানি যে বক্তৃতাটি মূলত প্রায় 1-2kHz এর কাছাকাছি হয়। আপনার ডেটা স্যাম্পলিং সম্ভবত 44kHz হতে পারে (এটি আপনার রেকর্ডিং ডিভাইসের উপর নির্ভর করে)। সুতরাং আমি প্রথমে যা করবো তা হল 10 পয়েন্ট জুড়ে আসল সময়ে স্কোয়ার সিগন্যালের চলমান গড়, সংকেত পাওয়ারের একটি খামটি। এটি সনাক্তকরণে বিলম্বিত করবে, সুতরাং আপনি এটিকে কম রাখতে চান।

তারপরে, আমি আপনার সিস্টেমে একটি ক্যালিব্রেশন পর্ব যুক্ত করব: ব্যবহারকারীকে চুপ করে থাকতে বলুন, একটি বোতাম টিপুন, এবং 10 সেকেন্ডের জন্য পটভূমির শব্দটি রেকর্ড করুন। খামের গড় বা মাঝারি প্রশস্ততা নিন, একটি সুরক্ষার জন্য 2 দিয়ে গুণ করুন এবং এটি আপনাকে জিমটি স্বয়ংক্রিয়ভাবে বলতে শুরু করবে এমন প্রান্তিকতা দেবে।

যদি এটি রিয়েল-টাইম রেকর্ডিং না হয়, তবে বিলম্বের কারণে বিরক্তিকরতা হ্রাস করতে আপনি 0-ফেজ চলন্ত গড় ব্যবহার করতে দরকারী বলে মনে করতে পারেন। এটি যদি আপনার মতো কাজ করে তবে আমাদের জানান।


9

এরিক,

আপনি যদি সত্যই দ্রুত এবং নোংরা কিছু করার পরে থাকেন তবে আপনাকে প্রথমে খামটি পেতে হবে এবং আমি এটি সহজভাবে করব (ম্যাটল্যাবে) লিখেছেন:

 envelope = abs(hilbert(yourSignal));

এই মুহুর্তে, আমি কেবল প্রান্তিকরূপে, এবং 'ভয়েস বিদ্যমান' যদি আপনি একটি নির্দিষ্ট প্রান্তিকের উপরে থাকেন।

এটি বিটিডব্লু একটি খুব সাধারণ সমাধান, তবে এটি আপনার পক্ষে কার্যকর হতে পারে।


1
+1 টি। সম্ভবত আপনি কোডের এই লাইনের পিছনে পদ্ধতিটি বিস্তারিতভাবে বর্ণনা করতে পারেন? আমি নিশ্চিত যে ওপি হিলবার্ট ট্রান্সফর্মের মাধ্যমে খাম উত্তোলনের সাথে পরিচিত নয়।
ফোনন

@ মোহাম্মদ ধন্যবাদ! তবে দয়া করে আমার সম্পাদনা 1 দেখুন see আমি অবশ্যই দ্রুত এবং নোংরা করতে চাই, তবে নিজে নিজেই আলগোরিদিমগুলিও করা দরকার :)
এরিক ব্রোটো

@ এরিকব্রোটো আহ ঠিক আছে, আমি আপনাকে একটি হিলবার্ট ট্রান্সফর্মার কীভাবে প্রয়োগ করতে পারি তা বলতে পারি, তবে আমি ধরে নিচ্ছি যে আপনার সি / ওবজ-সি লাইব্রেরিতে আপনার এফএফটি করার ক্ষমতা আছে? তা না হলে সমস্যা হতে চলেছে ... :-)
স্পেসি

অজগর এ কীভাবে অর্জন করবেন?
kRazzy আর

দয়া করে স্যার / ম্যাম আপনি কি আমাকে এই উত্সাহে কীভাবে পাইথনে এই হিলবার্ট বাস্তবায়িত হতে পারে সে সম্পর্কে উল্লেখ করতে পারেন?
kRazzy আর

6

আমি ধরে নিয়েছি যে আপনি জটিল সংকেত নয়, বাস্তবের সাথে কাজ করছেন- যদি এটি না হয় তবে আমাকে জানান এবং আমি উত্তরটি সংশোধন করতে পারি।

শক্তি সংকেতের বর্গ হিসাবে সংজ্ঞায়িত হয় (অর্থাত্ সিগন্যালের নমুনাগুলি তাদের দ্বারা গুণিত হয়)। বক্তৃতা উপস্থিত আছে কি নেই তা নির্ধারণ করার জন্য আপনি কিছু প্রান্তিকের সাথে বিদ্যুতের তুলনা করতে পারেন। বোধগম্যভাবে একটি ভাল প্রান্তিকতা খুঁজে পেতে আপনার রেকর্ডিংয়ে কিছু পরিমাপ করার প্রয়োজন হবে।

যদি আপনার রেকর্ডিংগুলি "পরিষ্কার" হয় (যেমন খুব বেশি শব্দ হয় না) তবে আমি সম্ভবত তাত্ক্ষণিক শক্তি (অর্থাত্ একটি একক নমুনা) প্রান্তিকের সাথে তুলনা করে যতটা সম্ভব সহজ হতে পারতাম। এর অর্থ হ'ল এমনকি যদি আপনি না চান তবে আপনাকে এটি বর্গাকারও করতে হবে না, আপনার কেবল পরম মান প্রয়োজন এবং এটি পাওয়ার থ্রোসোল্ডের বর্গমূলের সাথে তুলনা করুন, যা প্রাকটুমুটিযুক্ত হতে পারে। আপনি যখন স্পিচটি সনাক্ত করেন এবং এর আগে কিছু পরিমাণ রেকর্ডিং পেয়েছেন, নিশ্চিত হয়ে নিন যে আপনি সমস্ত বক্তৃতা পেয়েছেন (সম্ভবত এক সেকেন্ডের 1/10?) যতক্ষণ না আপনি প্রান্তিকের চেয়ে বেশি কোনও নমুনার দীর্ঘায়িত সময় খুঁজে পান। আবার, পিরিয়ডের দৈর্ঘ্যটি অনুমিতভাবে নির্ধারণ করা দরকার।

পাখলান পুনরাবৃত্তি.


4

আমি জাভাতে একটি অ্যাক্টিভিটি ডিটেক্টর ক্লাস লিখেছি। এটি আমার মুক্ত উত্স জাভা ডিএসপি সংগ্রহের অংশ । আপনি ইনপুট হিসাবে ডাব্লুএইভি ফাইলের সাহায্যে এটি পরীক্ষা করতে WavSplitter.java পরীক্ষা প্রোগ্রামটি ব্যবহার করতে পারেন।


মনে রাখবেন ওপি বিশেষত বলেছে যে তাকে সিতে অ্যালগরিদমগুলি নিজের লেখার দরকার আছে
স্যাম মালুনি

জাভা থেকে
সিটিতে

স্যার, অজগর এ কীভাবে অর্জন করবেন?
kRazzy আর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.