গোলমাল কণ্ঠস্বর সংকেত থেকে ফিল্টার বার্তা


9

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

আমি বেশিরভাগ উচ্চ ফ্রিকোয়েন্সি মুছে ফেলার ফলে আমার সংখ্যা শোনার সুযোগ হবে এই আশায় একটি লো-পাস ফিল্টার ব্যবহার করার চেষ্টা করেছি তবে, ভয়েসটি ভালভাবে শুনতে শুনতে আমি কম ড্রোন থেকেও মুক্তি পেতে পারিনি বলে মনে হয়। আমার প্রয়াসটি নিম্নরূপ ছিল (নিযুক্ত নিয়োগটি freq_space_low_pass_filterশেষ করা হয়েছে):

[data, SampleRate, NbitsPerSample]=wavread('noisy_msg6.wav');

y=data(:,1); % we will work only with one channel in this demo 
N=length(y); %number of sample points
t=( (1:N)*1/SampleRate ).'; % time spacing is 1/SampleRate and we want column vector

Y=fft(y);

spectrum_freq=fourier_frequencies(SampleRate, N);

Freq3db=100;
[spectrum_filtered,g_vs_freq]=freq_space_low_pass_filter(Y, SampleRate, Freq3db);


y_filtered=ifft(spectrum_filtered);

y_filtered=real(y_filtered);



wavwrite(y_filtered/(0.1+max(y_filtered)), SampleRate, NbitsPerSample,
         'noisy_msg6_filtered.wav');

%%%%%%%%down sampling%%%%%%%%

indexes=(abs(spectrum_freq) < 10*Freq3db);
spectrum_freq_down_sampled = spectrum_freq(indexes);
spectrum_down_sampled = spectrum_filtered(indexes);
N_down_sampled = length(spectrum_down_sampled);

spectrum_down_sampled=spectrum_down_sampled*N_down_sampled/N;

SampleRate_down_sampled=SampleRate*N_down_sampled/N;

y_down_sampled=real(ifft(spectrum_down_sampled));
t_down_sampled = ( (1:N_down_sampled)*1/SampleRate_down_sampled ).';

sound(y_down_sampled, SampleRate_down_sampled)

function [spectrum_filtered,g]=freq_space_low_pass_filter(spectrum, SampleRate, Freq3db)
%% applies low pass filter in the frequency domain
% spectrum - result of fft on time series data (column vector is expected)
% SampleRate - measured in Hz, 1/dt where dt spacing of the points in time domain
% Freq3db - desired 3db roll off point in Hz

N=length(spectrum);

function G=filter_gain(freq, Freq3db)
    G=1./(1+1i*freq/Freq3db); % this corresponds to low pass RC filter
end

spectrum_freq=fourier_frequencies(SampleRate, N);

% calculate filter gain for each spectrum frequency
g=filter_gain(spectrum_freq, Freq3db);
spectrum_filtered=spectrum.*g;
end

সিগন্যাল বর্ণালী প্লট: ছবি


আপনি আমাদের সাথে কাজ করছেন এমন একটি নমুনা সরবরাহ করতে পারেন? এবং সম্ভবত আপনার ফলাফল?
পেনেলোপ

আমি প্লটের চিত্রগুলি আপলোড করতে পারি না (পর্যাপ্ত পয়েন্ট নয়) এবং আপনাকে ফাইলে লিঙ্ক দেওয়ার কোনও উপায় নেই
user1825494

1
আপনি যদি মন্তব্যগুলিতে লিঙ্কগুলি রাখেন তবে কেউ আনন্দের সাথে এটিকে সম্পাদনা করবে And এবং যদি আপনি কোথাও ফাইলগুলি আপলোড করার এবং লিঙ্ক সরবরাহ করার কোনও উপায় খুঁজে পান তবে সেটিও ফিরে পান।
পেনেলোপ

2
যদি গ্রাফিকটি লগ-লগের পরিকল্পনা করা হত তবে গ্রাফটি আরও অনেক তথ্যপূর্ণ হবে। যেমনটি হয়, দেখে মনে হচ্ছে আপনার প্রায় 1.5 কেএজেডজ থেকে 22.5 কেজি হার্জ পর্যন্ত প্রশস্ত ব্র্যান্ডব্যান্ড রয়েছে, প্রায় 2 কেএইচআরজে সরু ব্যান্ড টোন আছে। আমি যা অনুমান করি তা হ'ল "ভয়েস" সংকেত, যা একটি উল্লেখযোগ্য ডিসি অফসেট হিসাবে উপস্থিত বলে মনে হয়, মোটামুটি শান্ত "গর্ত" এ বসে। উপযুক্ত ব্যান্ডপাস ফিল্টার দিয়ে বিচ্ছিন্ন করা সত্যিই এতটা কঠিন হওয়া উচিত নয়।
ডেভ টুইট করেছেন

উত্তর:


1

কয়েকটি বিষয়:

  1. ফ্রিকোয়েন্সি ডোমেনে ফিল্টারিং জটিল এবং সময় ডোমেন অ্যালিজিং এড়াতে ওভারল্যাপ অ্যাডের মতো একটি বাস্তব অ্যালগরিদম প্রয়োজন m সময়ের ডোমেনে সরাসরি ফিল্টার করা অনেক সহজ: [বি, এ] = মাখন (1,100 / (নমুনা রেট / 2); y_filtered = ফিল্টার (খ, ক, ওয়াই); আরও ভাল
  2. আপনি সম্ভবত ড্রোন ফ্রিকোয়েন্সি খাঁজ ফিল্টার লাগাতে চান
  3. ব্রড-ব্যান্ড স্টেশনারি আওয়াজের জন্য একটি ভাল পদ্ধতি হ'ল উইনার ফিল্টারিং বা বর্ণালী বিয়োগফল। এ নিয়ে অনেক কাগজপত্র প্রকাশিত হয়েছে।

0

আপনি নিম্ন পাস ফিল্টার ব্যবহার করে উল্লেখ করেছেন, তবে একজন কমেন্টার হিসাবে উল্লেখ করেছেন আপনি কম ফ্রিকোয়েন্সি শব্দটি ফিল্টার করার জন্য সম্ভবত একটি ব্যান্ড-পাস ফিল্টার দিয়ে আরও ভাল করতে পারবেন। আপনি যদি পূর্ব-বিদ্যমান সমাধানগুলিতে আগ্রহী হন তবে তৃতীয় পক্ষের লাইব্রেরিতে শব্দ কমানোর ফিল্টারও রয়েছে।


0

মানুষের কন্ঠে কিছু অদ্ভুততা রয়েছে যা সাহায্য করতে পারে। একটির জন্য, মহিলা কণ্ঠস্বর প্রায় 200Hz, পুরুষ নীচে থেকে শুরু হয়, সুতরাং এখানে উচ্চ-পাস ফিল্টার করা কিছুটা সহায়তা করবে। এছাড়াও শব্দ-বৈশিষ্ট্যগুলি-পৃথক-পুরুষ-এবং-মহিলা-ভয়েসকে দেখুন

অতিরিক্তভাবে, হিস্টোগ্রামের মাধ্যমে ড্রোন ফ্রিকোয়েন্সিগুলি সনাক্ত করুন।

কোডে এই সমস্ত করা কিছুটা জটিল is আপনি কি অডেসিটির মতো কিছু অডিও প্রোগ্রাম বিবেচনা করেছেন ?

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