विषयसूची:
- चरण 1: लिस्टा डी मटेरियाइस
- चरण 2: Adaptação Mecânica
- चरण 3: Acionamento Dos Motores
- चरण 4: Obtenção Do udio
- चरण 5: Configuração Do Arduino DUE (भाषा सी)
- चरण 6: इंटरफेसमेंटो दास टेक्नोलॉजीज
- चरण 7: Configuração Da DRAGONBOARD 410c (पायथन)
- चरण 8: व्याख्याÇÃओ डॉस आर्किवोस डी ऑडियो
- चरण 9: विज़ुअल डू सिनालिस का विश्लेषण करें
- चरण 10: एल्गोरिथम एम आर पैरा एक्स्ट्राकाओ दास में डॉस दादोस की विशेषताएं हैं
- चरण 11: न्यूरल को फिर से करें
वीडियो: सिस्टेमा ऑटोनोमो लोकलाइज़ाडोर डी वाज़ामेंटोस: ११ कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
एस्टे प्रोजेक्टो कंसिस्टे एम रॉब, क्यू एट्रावेस दा लीतुरा रियलाइज़ाडा पोर उम डिस्पोज़िटिवो, इक्विपैडो कॉम उम सेंसर पीज़ोएलेट्रिको, कैप्टुरा ओएस एस्पेक्ट्रोस दास वाइब्रेस नो सोलो, पोड आइडेंटिफ़ायर ई लोकलाइज़र, कॉम ओ प्रोसेसामेंटो डोस न्यूरल डेडोस, पोइस्वा उमा ट्यूबुलाकाओ।
ओ प्रोसैमेंटो डेस्टेस डैडोस ई रियलिजाडो पोर एल्गोरिटमोस इंस्टालाडोस और ड्रैगनबोर्ड 410सी। ऑस डैडोस टैम्बेम साओ एनविआडोस पैरा उम सर्विसो ना नुवेम, रिस्पॉन्सवेल पोर ऑक्सिलियर नो प्रोसेसो डी इंटेगेंसिया आर्टिफिशियल डू प्रोजेटो।
एस्टे प्रोजेटो फॉई डिसेनवोल्विडो नो हैकाटन क्वालकॉम, ड्यूरेंट ए टेक्नोफेसेंस दा फेकुलडेड डी एंगेनहरिया डी सोरोकाबा (फेसेंस), पार्टिसिपारम डो प्रोजेटो ओएस ग्रैडुंडो डी एनजेनहरिया मेकाट्रोनिका एनियो जुलियानो बोविनो, फेलिप जेवियर, लुकास एपी। गोम्स पोलो और रोनाल्डो पी. गोम्स पोलो। टैम्बेम पार्टिपोउ डो प्रोजेटो ओ अलनो डेनियल डे कास्त्रो पाचेको ग्रैडुंडो डे एनजेनहरिया मेकैनिका और यूनिवर्सिडेड न्यूटन पाइवा डे बेलो होरिज़ोंटे। ओ प्रोजेटो कॉन्टू कॉम ओ अपियो डॉस ग्रैडुअंडोस डी एनजेनहरिया मेकाट्रोनिका दा फेसेंस, लुकास नून्स मोंटेरो और फेलिप क्रिस्पिम दा सिल्वा साल्वाग्निनी।
चरण 1: लिस्टा डी मटेरियाइस
पैरा रियलिज़ाकाओ डेस्टे प्रोजेटो, ओएस सेगुंटेस मटेरियाइस फोरम यूटिलिज़ैडोस:
1 अरुडिनो ड्यू
1 ड्रैगनबोर्ड 410c
2 ड्राइवर्स के लिए मोटर डी कॉरंटे कॉन्टुआ कंटेडो कैडा उम:
4 ट्रांजिस्टर BC548
4 डायोडोस 1n4007
4 प्रतिरोध 4k7Ω W
1 चालक पैरा सर्वो मोटर दावेदार:
1 ट्रांजिस्टर BC548
1 डायोडोस 1N4007
1 प्रतिरोध 4k7Ω W
1 माउस यूएसबी
1 टेकलाडो यूएसबी
1 मॉनिटर
1 काबो एचडीएमआई
1 रोब डी एस्टीरास - प्लाटाफॉर्मा ज़ुमो
१ मिनी डिस्पोज़िटिवो डे क्रेमलहेइरा ई एनग्रेनगेम
1 सर्वो मोटर 9g
चरण 2: Adaptação Mecânica
और एक अधिग्रहण डॉस डैडोस पेलो सेंसर पाइज़ोएलेट्रिको, फ़ज़ से आवश्यक, ओ डिसेनवोल्विमेंटो डी उम डिस्पोज़िटिवो कॉम पिनहो ई क्रेमलहेइरा, कन्फर्म डेसेनहोस एनेक्सैडोस, नेस्ट कैसो जैसा पेकास फोरम फैब्रिकडास पोर उमा इंप्रेसोरा 3डी, डिविडो एटो एटो टेम्पो डे एक्जीक्यूकाओ, फिक्सौ-से ओ डिस्पोजिटिवो और प्लैटाफॉर्म ज़ुमो, यूटिलिज़ैंडो फ़िटा डुपला फेस, कन्फर्म वीडियो।
चरण 3: Acionamento Dos Motores
पैरा एक्जीक्यूटर ए मूविमेन्टाकाओ डॉस मोटर्स डो रोब ज़ूमो ई डो डिस्पोजिटिवो डी कैप्टुरा, फेज़-से नेसेरिया ए मोंटाजम डे डूइस ड्राइवर्स पैरा ओएस मोटरेस डी कॉरेंटे कॉन्टिनुआ ई उम ड्राइवर पैरा ओ सर्वो मोटर, कंफर्म फॉर फिगुरस एसीमा, सेंडो ए प्राइमिरा पैरा फिगुरा ओ ड्राइवर उम मोटर डी कोरेंटे कॉन्टिनुआ ईए सेगुंडा या ड्राइवर पैरा उम सर्वो मोटर।
चरण 4: Obtenção Do udio
इस पर विचार करें और इसके लिए ऑडियो डेस वाइब्रेट्स डू सोलो, फॉई यूटिलिजैडो उं डिस्पोजिटिवो डिसेनवोल्विडो कोमो पार्ट डू टीसीसी डे एंजेंहरिया मेकाट्रोनिका डॉस ग्रैडुअंडो लुकास नून्स मोंटेरो ई फेलिप सी। डा सिल्वा साल्वाग्निनी, मैयर सोब्रेसिटो डिटेलहेस सोब्रेसिटो डिटेलहेस ईमेल [email protected]।
एस्टे डिस्पोज़िटिवो यूटिलिज़ा-से डे उम सेंसर पीज़ोएलेट्रिको ए उमा प्लाका डे सर्किटो क्यू रियलिज़ा ए फिल्ट्रेजेम ई एम्प्लिफाकाओ डो सिनल।
जैसा कि फ़्रीक्वेंसीस डे इंटरसे पैरा ओ प्रोजेटो एस्टाओ एंट्रे १०० हर्ट्ज़ और ८०० हर्ट्ज़ है। इसो ओ डिस्पोजिटिवो डे सेंसरियामेंटो फोई कॉन्फिगुराडो कॉम उमा फ्रीक्वेंसी डे एमोस्ट्रेजेम डी 3 किलोहर्ट्ज़ पैरा क्यू सेजम रिस्पीटाडा जैसा कि कॉन्डिकिस डो तेओरेमा डे एमोस्ट्रेजेम डे न्यक्विस्ट, ऑनडे ए फ्रीक्वेंसी डे एक्विसिमा डेवे एस्टार।
Aquição é é habilitada e desabilitada através da interrupção do Arduino DUE।
चरण 5: Configuração Do Arduino DUE (भाषा सी)
डिविडो ए ग्रैंड क्वांटिडेड डे डैडोस, सेरका डी 3000 पोंटोस पोर सेगुंडो, डो टिपो इंटीरो डी 32 बिट्स, गेराडोस पेलो डिस्पोजिटिवो डे सेंसरियामेंटो ई नेसेसेरियोस पैरा प्रोसेसमेंटो डॉस एल्गोरिटमोस और ड्रैगनबोर्ड 410 सी, फॉई यूटिलिजाडो यूसो अरुडिनो डीयूई पैरा फेजर प्रक्रिया की आवश्यकता है, इसके लिए आवश्यक है कि शील्ड डी इंटरफेसमेंटो ग्रोव सीड सेंसर मेजेनाइन इंस्टालैडो और ड्रैगनबोर्ड 410c, क्यू possui um microcontrolador ATmega 328, não possui poder de processamento para essa operção।
O Arduino DUE foi configurado para receber os comandos enviados da plataforma QUALCOMM DRAGONBOARD 410c comunicação सीरियल के माध्यम से।
जैसा कि कोई Arduino फोरम कॉन्फ़िगर नहीं करता है:
रीयलिज़र और अधिग्रहण डॉस डैडोस;
DRAGONBOARD 410c के लिए Transmitir os dados obtidos;
एक प्रोग्राम बहस करें:
#शामिल करें#नंब_नमूना 3000 परिभाषित करें #DAC_Input A0 परिभाषित करें
#सर्वो को परिभाषित करें 7
#define PosServoMin 4 #define PosServoMax 6 #define period 60 unsigned int Scont=0, SNow=PosServoMin; अहस्ताक्षरित लंबी int DAC [Numb_Sample], ind=Numb_Sample; शून्य TC3_Handler () { TC_GetStatus (TC1, 0); अगर (इंड < Numb_Sample) डीएसी [इंड ++] = एनालॉग रीड (डीएसी_इनपुट); अगर (स्कॉंट
1); // 50% कर्तव्य चक्र
टीसी_सेटआरसी (टीसी, चैनल, आरसी); टीसी_स्टार्ट (टीसी, चैनल); tc->TC_CHANNEL[चैनल]. TC_IER = TC_IER_CPCS | टीसी_आईईआर_सीपीएएस; // हैबिलिटा ओएस रजिस्ट्रार टीसी-> टीसी_चैनल [चैनल] टीसी_आईडीआर = ~ (टीसी_आईईआर_सीपीसीएस | टीसी_आईईआर_सीपीएएस); // desabilita ओएस रजिस्ट्रार NVIC_EnableIRQ (irq); // हैबिलिटा इंटररुपकाओ }
व्यर्थ व्यवस्था ()
{ सीरियल.बेगिन (115200); पिनमोड (DAC_Input, INPUT); TimerStart(TC1, 0, TC3_IRQn, 1500);//टाइमर शुरू करें //TC_Stop(TC1, 0); पिनमोड (सर्वो, आउटपुट); }
शून्य लूप ()
{/*//जबकि (! सीरियल.उपलब्ध ()); चार आरसी;//= सीरियल.रीड (); इंट इंडेक्स = 0; अगर (आरसी == 0) { जबकि (! सीरियल.उपलब्ध ()); आरसी = सीरियल.रीड (); स्विच (आरसी) {केस 1: सूचकांक = 0; जबकि (! सीरियल.उपलब्ध ()); जबकि ((आरसी = सीरियल.रीड ())! = 0xFF) {सूचकांक <<= 8; सूचकांक + = आरसी; जबकि (! सीरियल.उपलब्ध ()); } सीरियल.प्रिंट(0); सीरियल.प्रिंट(2); SendNumber (DAC [सूचकांक]); सीरियल.प्रिंट (0xFF); टूटना; केस 3: जबकि (! सीरियल.उपलब्ध ()); अगर ((सीरियल.रीड ()) == 0xFF) {SNow=PosServoMax; देरी (500); इंडस्ट्रीज़ = 0; // टीसी_स्टार्ट (टीसी 1, 0); जबकि (इंड <Numb_Sample); // टीसी_स्टॉप (टीसी 1, 0); स्नो = पॉस सर्वोमिन; देरी (500); सीरियल.प्रिंट (0); सीरियल.प्रिंट(4); सीरियल.प्रिंट (0xFF); } टूटना; } } और अगर (आरसी == '2') {सीरियल.प्रिंट ("टेस्ट सर्वो मोटर / n"); जबकि (! सीरियल.उपलब्ध ()); आरसी = सीरियल.रीड (); अगर (आरसी == '1') {सीरियल प्रिंट ("मोड 1 / n"); स्नो = पॉससर्वोमैक्स; } if(rc=='2') { Serial.print("मोड 2\n"); स्नो = पॉस सर्वोमिन; } } */ SNow=PosServoMax; देरी (100); स्नो = पॉस सर्वोमिन; देरी (100); }
चरण 6: इंटरफेसमेंटो दास टेक्नोलॉजीज
एक संचार के लिए डॉस डैडोस एंट्रे ओ अर्डुइनो ड्यू ईए ड्रैगनबोर्ड 410 सी, इनिशियलमेंटे यूटिलिजौ-से ए इंटरफेस दा फिगुरा एसिमा, ओ क्यू नो फोई पॉसिवेल एक्ज़ीक्यूटर, एंटेओ ऑप्टो-सी डीयूई पेलो यूसो डी यूमा इंटरफ़ेस यूएसबी सीडीसी है। necessitaria da recompilação do KERNEL da DRAGONBOARD 410c, que não se fez por causa do curto tempo disponível.
चरण 7: Configuração Da DRAGONBOARD 410c (पायथन)
फॉइ कॉन्फिगुराडा पैरा एनवीयर एओ अरुडिनो ड्यू ओएस कोमांडोस पैरा रियलिजर ए एक्क्विसिको डे डैडोस ई ट्रांसमिटिर ओएस डैडोस ओबटिडोस। सेग्यू कोडिगो अबाइक्सो।
अवलोकन: ए बोर्डेजम यूटिलाइजाडा नो कोडिगो, नो फंकियोनोउ डिविडो एओस निवेस डे टेनसाओ यूटिलिजैडोस पेलो अर्डुइनो ड्यू ई ओ मेजेनाइन सेरेम असंगत। इसो ऑप्टो-से पेलो इंटरफेसमेंटो यूएसबी के लिए, क्यू necessitaria da recompilação do KERNEL na DRAGONBOARD 410c para que a porta fosse criada corretamente para a comunicação.
आयात समय आयात सीरियल आयात पांडा पीडी के रूप में आयात numpy np. के रूप में
# Configuração da conexão धारावाहिक
सेर = सीरियल। सीरियल (पोर्ट = '/ देव / ट्टीएएमसी 0', # ट्टी 96 बी 0', बॉड्रेट = 250000, समता = सीरियल। PARITY_NONE, स्टॉपबिट्स = सीरियल। STOPBITS_ONE, बाइट्साइज़ = सीरियल। आठ बिट्स)
ser.isOpen ()
प्रिंट ('नीचे अपने आदेश दर्ज करें।\r\nआवेदन छोड़ने के लिए "बाहर निकलें" डालें।')
इनपुट = 1
जबकि 1: इनपुट = इनपुट (">>") अगर इनपुट == 'एक्जिट': सेर.क्लोज () एग्जिट () एलिफ इनपुट == 'रीड': सेर.राइट (0) # एनविया ओ कॉमांडो पैरा ओ अरुडिनो ड्यू realizar a coleta dos dados ser.write(1) # Envia o comando para o Arduino DUE ट्रांसमीटर ओएस डैडोस कोलेटैडोस
सूची =
मेरे लिए रेंज में (3000):
ser.write(i/256) ser.write((i< 0: out = ser.read(2) if(out == 0x0002): atual = 0 c = ser.read(1) जबकि(c != 0xFF): atual << 8 atual += cc = ser.read(1) lista.append(atual)
चरण 8: व्याख्याÇÃओ डॉस आर्किवोस डी ऑडियो
पैरा पोडर रियलिज़र उमा प्राइमिरा एनालिस डॉस डैडोस ओबटिडोस एट्रैवेस डू सेंसर, से फ़ेज़ नेसेरिया ए कन्वर्साओ डॉस आर्किवोस नो फॉर्मेटो डब्ल्यूएवी, फ़ोरनेसिडोस पेलोस एलुनोस ऑटोरेस डू टीसीसी ई कोलाबोराडोर्स डू प्रोजेटो, पैरा वेलोरेस न्यूमेरिकोस, कैडिज़ नोज़ 10. पैरा रियलिज़र एस्टा बातचीत के लिए फ़ोई एस्क्रिटो उम एल्गोरिटमो एम पायथॉन 3 क्यू एल ओ आर्किवो डब्ल्यूएवी ई सल्वा ओएस डैडोस डो एस्पेक्ट्रो एम उम आर्किवो सीएसवी। ओ एल्गोरिथम यूटिलाइज़ाडो सेग्यू अबाइक्सो ई एम एनेक्सो पैरा डाउनलोड।
एसे एल्गोरिथम नो से फ़ज़ नेसेसरियो पैरा ओ फंकियोनामेंटो डू सिस्टेमा, जे क्यू ओ अरुडिनो ड्यू जे एनवीयारा एसेस डैडोस एम उम एरे डे वेलोरेस न्यूमेरिकोस।
# कोडिंग: utf-8
# बातचीत और बातचीत के लिए ऑडियो के लिए सीएसवी
# MÓDULOS UTILIZADOS
एनपी के रूप में आयात लहर आयात numpy पीडी के रूप में आयात पांडा plt के रूप में आयात matplotlib.pyplot
# FUNÇÃO PARA CONVERTER WAV EM DADOS DO ESPECTRO E Salvar CSV
def audio_to_csv(file_name): wave_file = wave.open(file_name+'.wav', 'rb') data_size = wave_file.getnframes() sample_rate = wave_file.getframerate() time_step = 1/sample_rate waveData = wave_file.readframes(data_size-1) सिग्नल = np.fromstring(waveData, dtype='int32') Time=np.linspace(start=0, stop=data_size/sample_rate, num=data_size, endpoint=True) df = pd.concat([pd. DataFrame(सिग्नल), pd. DataFrame (समय)], अक्ष = 1) df.to_csv (file_name + '.csv', अनुक्रमणिका = गलत) वापसी df
# कैरेगैंडो डेटा फ्रेम COM OS DADOS DO ऑडियो
file_name = 'Solo_com_Vazamento' df_vazamento = audio_to_csv(file_name) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = ऑडियो_to_csv '(फ़ाइल_नाम)'
# GRÁFICO DO ESPECTRO DE AUDIO
आकृति, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(20, 10)) ax1.plot(df_vazamento['time'], df_vazamento['amp']) ax1.set_title('सोलो कॉम वाजामेंटो', फॉन्टडिक्ट = {'फोंटसाइज': 20, 'फॉन्टवेट': 'बोल्ड'}) ax1.set_xlabel ('टेम्पो [एस]', फॉन्टडिक्ट = {'फोंटसाइज': 16}) ax1.set_ylim ([-4e8, 4e8]) ax2.plot(df_sem_vazamento['time'], df_sem_vazamento['amp']) ax2.set_title('Solo sem Vazamento', fontdict={'fontsize': 20, 'fontweight': 'bold' }) ax2.set_xlabel('Tempo [s]', fontdict={'fontsize': 16}) ax2.set_ylim([-4e8, 4e8]) Fig.tight_layout(h_pad=5) plt.show()
चरण 9: विज़ुअल डू सिनालिस का विश्लेषण करें
कॉम ओ पायथन 3 और रियलाइज़ा ए ट्रांसफॉर्माडा डी फूरियर, एस्टे आर्टिफिशियो मैटेमेटिको रियलिज़ा ए ट्रांसफॉर्माको डू सिनल डो डोमिनियो डू टेम्पो पैरा ओ डोमिनियो दा फ़्रीक्वेंसिया, ऑनडे से टॉर्ना पॉसिवेल एनालिसर एज़ वैरियस फ़्रीक्वेंसीस, और एम्पलीट्यूड। पेला एनालिस विजुअल डो ग्रैफिको डा ट्रांसफॉर्माडा डी फूरियर उम प्रोफेशनल कॉम कॉन्हेकिमेंटोस एस्पेसिफिकोस पोडेरा आइडेंटिफायर ए ऐक्सिटेंसिया डे अल्गम वाजामेंटो ना ट्यूबुलाकाओ। एस्टेस ग्रैफिकोस सर्विरो पैरा वैलिडाकाओ दास एनालिसेस रियलाइज़दास पेलो अल्गोरित्मो डे डिटेकाओ ऑटोमेटिका।
लिमिटैंडो ओ ईिक्सो दास फ़्रीक्वेंसीस एंट्रे १०० हर्ट्ज़ और ८०० हर्ट्ज़, फ़िका क्लारो ए ऐक्सिटेंशिया डे वाज़ामेंटोस क्वांडो से ऑब्ज़र्वम डिस्टर्बियोस नेसे रेंज डे फ़्रीक्वेंसीस।
# कोडिंग: utf-8# मोडुलोस यूटिलिजैडोस पैरा प्रोसेसामेंटो डा ट्रांसफॉर्माडा डी फूरियर
पीडी के रूप में आयात पंडों को एनपी आयात के रूप में एनपी आयात तरंग के रूप में आयात करें पीएलटी के रूप में आयात पायप्लॉट से आयात करें पीएलटी के रूप में आयात करें। # Taxa de amostragem em Hz Ts = 1.0/Fs; # अंतराल डी amostragem y = pd.concat(df_list) t = y['time'] # Vetor de tempos y = y['amp'] # वेटर डे एम्पलीट्यूड n = लेन (y) # कॉम्प्रिमेंटो डू साइनल k = np. arange(n) T = n/Fs frq = k/T frq = frq[range(n//2)] Y = np.fft.fft(y)/n Y = Y[range(n//2)] tmp = pd. DataFrame() tmp['amp'] = abs(Y) tmp['freq'] = frq max_lim = max(tmp['amp'][(tmp['freq']>=100) और (tmp['freq']<=800)]) fig, ax = plt.subplots(2, 1, figsize=(20, 10)) ax[0].plot(t, y) ax[0].set_xlabel('समय') कुल्हाड़ी [0]। set_ylabel ('आयाम') कुल्हाड़ी [1]। साजिश (frq, पेट (वाई), 'आर') कुल्हाड़ी [1]। सेट_एक्सलिम ([१००, ८००]) कुल्हाड़ी [1].set_ylim([0, max_lim]) ax[1].set_xlabel('Freq (Hz)') ax[1].set_ylabel('|Y(freq)|') plt.show() वापसी frq, abs(Y)# Função que realiza a carga dos dados do CSV e chama a função de Fourier def read_csv(file_name, init, final): df = pd.read_csv(file_name + '.csv') df.columns = ['amp', ' time'] डेल्टा = फाइनल-इनिट अगर init*44100> लेन(df) या फाइनल*44100>लेन(df): init = (len(df)/44100)-delta if init =100) और (df['freq ']<=800)] एमएक्स = क्रमबद्ध (डीएफ ['amp']) प्रिंट ("मीडिया दास एम्पलीट्यूड:", एनपी.राउंड (np.mean(mx))) प्रिंट ("प्रतिशत उन्हें मीडिया के आयामों से संबंधित है।") प्रिंट ("100 maiores एम्पलीट्यूड ", np.mean(mx[-100):])//df['amp'].mean()*100, "%", sep="") Print("50 maiores एम्पलीट्यूड:", np.mean(mx[-50:])//df ['amp'].mean()*100, "%", sep="") Print("10 maiores एम्पलीट्यूड:", np.mean(mx[-10:])//df['amp']. माध्य ()*100, "%", सितंबर = "") प्रिंट ("मुख्य आयाम:", np.mean(mx[-1:])//df['amp'].mean()*100, " %", sep="")read_csv('Solo_com_Vazamento', 2, 10) # उदाहरण डे ग्रैफिकोस पैरा वाज़मेंटोरेड_सीएसवी('सोलो_सेम_वाज़मेंटो', 2, 10) # उदाहरण डे ग्राफ़िकोस पैरा सेम वाज़मेंटो
चरण 10: एल्गोरिथम एम आर पैरा एक्स्ट्राकाओ दास में डॉस दादोस की विशेषताएं हैं
यूटिलिज़ौ-से उम अल्गोरित्मो एम आर पैरा रियलिज़र ओ प्रोसेसमेंटो ई एक्स्ट्राकाओ दास फीचर्स (कैरेक्टरिस्टिकस) डॉस डैडोस ओबटिडोस।
एस्टे प्राइमिरो एल्गोरिटमो रियलिजा उमा एक्स्ट्राकाओ आइडेंटिफाडा, ऑनडे ई नेसेसरियो सेबर से ओ आर्किवो डी ऑडिओ ट्रैटा-से डे उमा एमोस्ट्रा वाजामेंटो डिटेक्टाडो कहां नाओ, इस्सो पोर क्यू ओएस डैडोस परिणाम डेसे प्रोसेसो सर्वर उपयोग पैरा का उपयोग करें।
पैरा क्वांडो ओ सिस्टेमा एस्टिवर एम मोडो डी ओपेराकाओ उम एल्गोरिदम उम पाउको डिफरेंट सेरा एक्जीक्यूटाडो, ओन्डे नो एस्टे फारा ए एक्स्ट्राकाओ नो आइडेंटिफाडा, गेरांडो सोमेंटे एज़ कैरेक्टरिस्टिकस सेम उमा आइडेंटिफ़िका।
एस्टा में सुविधाओं के बारे में जानकारी दी गई है जिसमें विभिन्न प्रकार की जानकारी दी गई है, एओ एस्पेक्ट्रो डी ऑडियो कैप्टुरैडो, अबाइक्सो सेगुइरा उमा डिस्क्रिकाओ (एम इंग्लस) डेस्ट कैरेक्टरिस्टिक्स।
एस्टे एल्गोरिटमो फ़ज़ पार्ट डी उम प्रोजेटो डिस्पोनिवेल नो गिटहब ई पोड सेर एसेसैडो एट्रैवेस डेस्ट लिंक, ओ मेस्मो फोई मॉडिफाडो पैरा एटेंडर एस्पेसिफिकैस डू प्रोजेटो।
ओ सॉफ्टवेयर यूज़डो पैरा रॉडर ओ अल्गोरिटमो é gratuito, डाउनलोड डू इंटरप्रेटर आर ई डू आर स्टूडियो।
विशेषताएँ अतिरिक्त:
- माध्य आवृत्ति: माध्य आवृत्ति (kHz में)
- एसडी: आवृत्ति का मानक विचलन
- माध्यिका: माध्य आवृत्ति (kHz में)
- Q25: पहली मात्रा (kHz में)
- Q75: तीसरी मात्रा (kHz में)
- IQR: इंटरक्वेंटाइल रेंज (kHz में)
- तिरछा: तिरछापन (स्पेकप्रॉप विवरण में नोट देखें)
- कर्ट: कर्टोसिस (स्पेकप्रॉप विवरण में नोट देखें)
- sp.ent: वर्णक्रमीय एन्ट्रापी
- sfm: वर्णक्रमीय समतलता
- मोड: मोड आवृत्ति
- केन्द्रक: आवृत्ति केन्द्रक (स्पेकप्रॉप देखें)
- पीकफ: पीक फ़्रीक्वेंसी (उच्चतम ऊर्जा वाली आवृत्ति)
- माध्य मज़ा: ध्वनिक सिग्नल में मापी गई मौलिक आवृत्ति का औसत
- minfun: ध्वनिक सिग्नल में मापी गई न्यूनतम मौलिक आवृत्ति
- मैक्सफुन: ध्वनिक सिग्नल में मापी गई अधिकतम मौलिक आवृत्ति
- माध्यिका: ध्वनिक संकेत में मापी गई प्रमुख आवृत्ति का औसत
- माइंडोम: ध्वनिक सिग्नल में मापी जाने वाली न्यूनतम प्रमुख आवृत्ति
- मैक्सडॉम: ध्वनिक सिग्नल में मापी जाने वाली अधिकतम प्रमुख आवृत्ति
- dfrange: ध्वनिक सिग्नल में मापी गई प्रमुख आवृत्ति की सीमा
- modindx: मॉडुलन index. आवृत्ति रेंज द्वारा विभाजित मौलिक आवृत्तियों के आसन्न माप के बीच संचित पूर्ण अंतर के रूप में गणना की जाती है
- लेबल: रिसाव या बिना रिसाव
एल्गोरिदम यूएसडो:
पैकेज <- c('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071')if (लंबाई (सेटडिफ (पैकेज, पंक्ति नाम (स्थापित। पैकेज ())))> 0) {इंस्टॉल.पैकेज (सेटडिफ (पैकेज, पंक्ति नाम (स्थापित। पैकेज ())))}
पुस्तकालय (ट्यूनआर)
पुस्तकालय (सीवेव) पुस्तकालय (caTools) पुस्तकालय (rpart) पुस्तकालय (rpart.plot) पुस्तकालय (randomForest) पुस्तकालय (warbleR) पुस्तकालय (चूहे) पुस्तकालय (xgboost) पुस्तकालय (e1071)
specan3 <- function(X, bp = c(0, 22), wl = 2048, दहलीज = 5, समानांतर = 1){# समानांतर प्रसंस्करण का उपयोग करने के लिए: पुस्तकालय (devtools), install_github('nathanvan/parallelsugar') if(class(X) == "data.frame") {if(all(c("sound.files", "selec", "start", "end")%% colnames(X)) { start <- as.numeric(unlist(X$start)) end <- as.numeric(unlist(X$end)) sound.files <- as.character(unlist(X$sound.files)) selec <- as.character(unlist(X$selec)) } और रोकें (पेस्ट करें (पेस्ट करें (c("sound.files", "selec", "Start", "end")[!(c("sound.files", "selec", "शुरू", "अंत")%% कॉलमनाम (एक्स))], पतन = ","), "कॉलम डेटा फ्रेम में नहीं मिला")) } अन्य स्टॉप ("एक्स डेटा फ्रेम नहीं है") #यदि प्रारंभ या अंत स्टॉप में NA हैं यदि (कोई (is.na (c (अंत, प्रारंभ)))) रोकें ("प्रारंभ और/या अंत में पाए गए NA") # यदि अंत या प्रारंभ संख्यात्मक स्टॉप नहीं हैं अगर (सभी (वर्ग (अंत)! = "संख्यात्मक" और वर्ग (प्रारंभ)! = "संख्यात्मक")) रोकें ("'अंत' और 'चयन' संख्यात्मक होना चाहिए") कोई भी (अंत - प्रारंभ <0)) रोकें (पेस्ट करें ("शुरुआत एन से अधिक है) d in", लंबाई (जो (अंत - प्रारंभ 20)) रोकें (पेस्ट (लंबाई (जो (अंत - प्रारंभ> 20)), "चयन (ओं) 20 सेकंड से अधिक लंबा")) विकल्प (शो। त्रुटि। संदेश = सत्य) #अगर बीपी वेक्टर या लंबाई नहीं है!=2 स्टॉप अगर(!is.vector(bp)) स्टॉप ("'बीपी' लंबाई 2 का एक संख्यात्मक वेक्टर होना चाहिए") और {अगर (! लंबाई (बीपी) == 2) स्टॉप ("'बीपी' लंबाई 2 का एक संख्यात्मक वेक्टर होना चाहिए")} #रिटर्न चेतावनी यदि सभी ध्वनि फ़ाइलें नहीं मिलीं तो fs <- list.files(path = getwd(), pattern = ".wav$", इग्नोर.केस = TRUE) अगर (लंबाई (अद्वितीय (ध्वनि। फ़ाइलें [(ध्वनि। फ़ाइलें%% fs में)]))! = लंबाई (अद्वितीय (ध्वनि। फ़ाइलें))) बिल्ली (पेस्ट (लंबाई (अद्वितीय (ध्वनि।) files))-length(unique(sound.files[(sound.files%in% fs)])), ".wav file(s) not found")) # वर्किंग डायरेक्टरी में साउंड फाइल्स की संख्या गिनें और अगर 0 स्टॉप d <- जो(sound.files%in% fs) if(length(d) == 0){stop(".wav फाइलें वर्किंग डायरेक्टरी में नहीं हैं")} और { start <- start[d] end <- end[d] selec <- selec[d] sound.files <- sound.files[d] } # अगर पैरेलल सांख्यिक नहीं है अगर(!is.numeric(parallel)) stop("'parallel' जरूर लंबाई 1 का एक संख्यात्मक वेक्टर बनें") अगर (कोई (! (समांतर %% 1 == 0)), समानांतर 1) {विकल्प (चेतावनी = -1) अगर (सभी (Sys.info() [1] == " विंडोज़", requNamespace("parallelsugar", चुपचाप = TRUE) == TRUE)) lapp <- function(X, FUN) parallelsugar::mclapply(X, FUN, mc.cores = समानांतर) और if(Sys.info() [1] == "Windows"){ cat("Windows उपयोगकर्ताओं को समानांतर कंप्यूटिंग के लिए 'parallelsugar' पैकेज स्थापित करने की आवश्यकता है (आप इसे अभी नहीं कर रहे हैं!)") lapp <- pbapply::pblapply} else lapp <- function (X, FUN) समानांतर::mclapply(X, FUN, mc.cores = समानांतर)} और lapp <- pbapply::pblapply विकल्प (चेतावनी = 0) अगर (समानांतर == 1) बिल्ली ("ध्वनिक मापदंडों को मापना:") x <- as.data.frame(lapp(1:length(start), function(i) {r <-tunR::readWave(file.path(getwd(), sound.files), from = start, to = end, Units = "सेकेंड") b सीलिंग([email protected]/2000) - 1) b[2] <- सीलिंग([email protected]/2000) - 1 #फ़्रीक्वेंसी स्पेक्ट्रम विश्लेषण songspec <- Seewave::spec(r, f = [email protected], प्लॉट = FALSE) विश्लेषण <- Seewave::specprop(songspec, f = [email protected], flim = c(0, 280/1000), प्लॉट = FALSE) #सेव पैरामीटर्स मीनफ़्रेक <- विश्लेषण$मीन/1000 sd <- विश्लेषण$sd/1000 माध्य <- विश्लेषण$ माध्य/1000 Q25 < - विश्लेषण$QQ75 <- विश्लेषण$QIQR <- विश्लेषण$IQR/1000 तिरछा <- विश्लेषण$स्केवनेस कर्ट <- विश्लेषण$कुर्टोसिस sp.ent <- विश्लेषण$sh sfm <- विश्लेषण$sfm मोड <- विश्लेषण$मोड/1000 सेंट्रोइड <- विश्लेषण $ सेंट/1000 # आयाम चोटियों के साथ आवृत्ति चोटी <- 0 # सीवेव:: एफपीक्स (गीतस्पेक, एफ = आर @ सैम्प.रेट, डब्ल्यूएल = डब्ल्यूएल, एनएमएक्स = 3, प्लॉट = गलत) [1, 1] #फंडामेंटल फ़्रीक्वेंसी पैरामीटर ff <- सीवेव:: फंड (आर, एफ = आर @ सैम्प.रेट, ओवीएलपी = 50, थ्रेशोल्ड = थ्रेशोल्ड, एफएमएक्स = 280, यलिम = सी (0, 280/1000), प्लॉट = गलत, डब्ल्यूएल = wl)[, 2] माध्य मज़ा<-mean(ff, na.rm = T) minfun<-min(ff, na.rm = T) maxfun<-max(ff, na.rm = T) #डोमिनेंट फ़्रीक्वेंसी पैरामीटर y <- Seewave::dfreq(r, f = [email protected], wl = wl, ylim=c(0, 280/1000), ovlp = 0, प्लॉट = F, थ्रेशोल्ड = थ्रेशोल्ड, बैंडपास = b * 1000, fftw = TRUE)[, 2] माध्य <- माध्य (y, na.rm = TRUE) मन <- min(y, na.rm = TRUE) अधिकतम <- अधिकतम (y, na.rm = TRUE) dfrange <- (maxdom - Mindom) अवधि <- (end - start) #मॉड्यूलेशन इंडेक्स कैलकुलेशन में बदलाव <- vector() for(j जिसमें(!is. na(y))){ परिवर्तन <- abs(y[j] - y[j + 1]) परिवर्तन <- संलग्न करें (परिवर्तन, परिवर्तन) } अगर(mindom==maxdom) modindx<-0 और modindx <- माध्य (परिवर्तन, na.rm = T)/dfrange #save परिणाम वापसी (c(अवधि, माध्यफ़्रेक, sd, माध्यिका, Q25, Q75, IQR, तिरछा, कर्ट, sp.ent, sfm, मोड, सेंट्रोइड, पीकफ़, माध्यफ़न, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx)) })) #परिणाम के नाम बदलें rownames(x) <- c("duration", "meanfreq", "sd", "median", "Q25", "Q75", "IQR", "स्क्यू", "कर्ट", "sp.ent", "sfm", "मोड", "सेंट्रॉइड", "पीकफ", "मीनफुन", "मिनफुन", "मैक्सफुन", "मीनडॉम", "माइंडम", "मैक्सडॉम", "डीएफरेंज", "मोडिंडक्स") x <- डेटा.फ्रेम (साउंड.फाइल्स, सेलेक, as.data.frame(t(x))) colnames(x)[1:2] <- c("sound.files", "selec") rownames(x) <- c(1:nrow(x)) return(x) }
processFolder <- function(folderName) {# खाली data.frame से शुरू करें। डेटा <- data.frame() # फ़ोल्डर में फ़ाइलों की सूची प्राप्त करें। सूची <- list.files(folderName, '\.wav') # प्रसंस्करण के लिए data.frame में फ़ाइल सूची जोड़ें। के लिए (सूची में फ़ाइल नाम) {पंक्ति <- data.frame (फ़ाइल नाम, 0, 0, 20) डेटा <- rbind (डेटा, पंक्ति)} # कॉलम नाम सेट करें। नाम (डेटा) <- c ('ध्वनि. फ़ाइलें', 'चयन', 'प्रारंभ', 'अंत') # प्रसंस्करण के लिए फ़ोल्डर में ले जाएँ। setwd(folderName) # फाइलों को प्रोसेस करें। ध्वनिकी <- specan3 (डेटा, समानांतर = 1) # मूल फ़ोल्डर में वापस जाएं। setwd('..') ध्वनिकी }
लिंग <- function(filePath) { if (!exists('genderBoosted')) {load('model.bin') } # सेटअप पथ। currentPath <- getwd () फ़ाइल नाम <- बेसनाम (फ़ाइलपाथ) पथ <- dirname (filePath) # फ़ाइल पढ़ने के लिए निर्देशिका सेट करें। setwd(path) # खाली data.frame से शुरू करें। डेटा <- data.frame(fileName, 0, 0, 20) # कॉलम नाम सेट करें। नाम (डेटा) <- c ('ध्वनि। फ़ाइलें', 'चयन', 'प्रारंभ', 'अंत') # प्रक्रिया फ़ाइलें। ध्वनिकी <- specan3 (डेटा, समानांतर = 1) # पथ को पुनर्स्थापित करें। setwd(currentPath) भविष्यवाणी (जेंडरकॉम्बो, न्यूडेटा = ध्वनिकी)}
# लोड डेटा
रिसाव <- processFolder('caminho para o पास्ता com नमूने de áudio com vazamento') बिना_leakage <- processFolder('caminho para o पास्ता com नमूने de áudio sem vazamento')
# लेबल सेट करें।
लीकेज$लेबल <- 1 बिना_लीकेज$लेबल <- 2 डेटा <- rbind(रिसाव, बिना_लीकेज) डेटा$लेबल <- फैक्टर (डेटा$लेबल, लेबल=सी('रिसाव', 'बिना_लीकेज'))
# अप्रयुक्त कॉलम हटाएं।
डेटा $ अवधि <- नल डेटा $ ध्वनि। फ़ाइलें <- पूर्ण डेटा $ चयन <- पूर्ण डेटा $ चोटी <- नल
# NA वाली पंक्तियों को हटा दें।
डेटा <- डेटा [पूर्ण। मामले (डेटा),]
# सीएसवी डेटासेट लिखें।
write.csv(डेटा, फ़ाइल='फीचर्स.सीएसवी', सितंबर=', ', रो.नाम=एफ)
चरण 11: न्यूरल को फिर से करें
ए आइडिया डू यूसो डी उमा रेड न्यूरल, ई ए डे रियलिज़र उम रिकॉन्हेसिमेंटो ऑटोमैटिज़ाडो एट्रैवेस डॉस डैडोस कोलेटैडोस पेलो डिस्पोज़िटिवो डे सेंसरियामेंटो।
और न्यूरल यूटिलाइज़्डे डू टिपो एमएलपी (मल्टीलेयर परसेप्ट्रॉन), इस मॉडलो é treinado com डेडोस प्रिविमेंटे आइडेंटिफाडोस ई एपोस एसएसई ट्रेनामेंटो या मॉडलो इम्प्लांटैडो नो सिस्टेमा कॉन्सेगुइरा रियलिज़र ए आइडेंटिफाकाओ और इनफॉर्मैटो ऑटोमेटिका है।
फोई नेसेसरियो रियलिज़र उमा फिल्ट्राजेम डॉस डैडोस डे एन्ट्राडा, पोइस अल्गुमास कैरेक्टरिस्टिकस इस्टवम डिमिनुइंडो ए टैक्सा डे एसर्टो दा रेडे एओ इनवेस डे मेलहोरा-ला। नाओ फ़ोई रियलाइज़ाडो नेन्हुमा अबॉर्डेजम एस्टैटिस्टिका म्यूइटो एप्रोफंडा, मास मेस्मो कॉम उम ट्रैबल्हो माईस सुपरफिशियल पॉड-से चेगर ए अल्गुमास वेरिएविस कॉम बॉन्स डेसेम्पेनहोस।
पैरा ऑस टेस्टेस रियलाइज़डोस ओ मॉडलो ऑबटेव उम डेसेम्पेनहो म्यूइटो बॉम, अल्केन्संडो और मियोरिया डॉस टेस्टेस उमा टैक्सा डे एसर्टो डी 100%, कॉमो पोड सेर ऑब्जर्वेडो और इमेजम एनेक्सा।
एस्टे एल्गोरिटमो ई यूटिलिज़ाडो पैरा ट्रेनर ओ मॉडलो दा रेडे ई रिटॉर्नर ए टैक्सा डे एसर्टो डू मेस्मो। नो सिस्टम डी डिटेकाओ उम अल्गोरित्मो उं पाउको डिफरेंट सेरिया यूएसडो, पोइस एले रियलिजेरिया ओ ट्रेइनो या रिसेबेरिया उम मॉडलो जे ट्रेइनाडो द नुवेम कहां डी अल्गुमा आउटरा फोंटे ई कॉम एसे मॉडलो रियलिजारिया जैसा कि वास्तविक रूप में वास्तविक है।
# कोडिंग: utf-8
पीडी. के रूप में आयात पांडा
sklearn.model_selection से np के रूप में numpy आयात करें sklearn.neural_network से tts के रूप में ट्रेन_टेस्ट_स्प्लिट आयात करें sklearn.metrics से एमएलपी के रूप में MLPClassifier आयात करें। sklearn.metrics से Cr के रूप में वर्गीकरण_रिपोर्ट आयात करें।
# लेइटुरा डॉस डैडोस सीएसवी करते हैं
df = pd.read_csv('features.csv') # Separação das entradas df_X = df[df.columns[:len(df.columns)-1] # फिल्ट्रैंडो as entradas df_X = df_X
# सेपरांडो डैडोस पैरा ट्रेनो ई टेस्टे
X_train, X_test, Y_train, Y_test = tts(df_X, df_Y, test_size=0.1)
#क्रिआंडो मॉडलो डे रेडे न्यूरल
मॉडलो = एमएलपी (अल्फा = 0.0001, Learning_rate_init = 0.0001, हिडन_लेयर_साइज़ = (५०, ५०, ५०, ५०), मैक्स_इटर = १००००, सक्रियण = 'तन', सॉल्वर = 'एलबीएफजीएस')
#ट्रेनांडो मॉडलो
modelo.fit(X_train, Y_train) परिणाम = modelo.predict(X_test)
#इम्प्रिमिन्डो रिजल्टडोस
रिपोर्ट = cr(Y_test, result) mat = cm(y_pred=result, y_true=Y_test) प्रिंट ("मैट्रिज डी कन्फ्यूसाओ") प्रिंट (मैट, एंड = "\ n / n") प्रिंट ("रिलेटोरियो डी क्लासिफाकाओ") प्रिंट (रिपोर्ट good)
सिफारिश की:
प्रोजेटो आईओटी - सिस्टेमा डिटेक्टर डी फ्यूमाका: 5 कदम
प्रोजेटो आईओटी - सिस्टम डिटेक्टर डी फ्यूमाका: परिचय सिस्टम डिटेक्टर डी फ्यूमाका कंसिस्टे एम उमा सोलुकाओ आईओटी कॉम ओ ओब्जेटिवो डे परमिटर ओ मॉनिटरामेंटो डी अलार्म्स डी इनकिंडियो डे रेजिडेंसियास एट्रैवेस डी उम एप्लीटिवो एंड्रॉइड। ओ प्रोजेक्टो ई बेसाडो एम उम माइक्रोकंट्रोलर क्यू से कम्यूनिका कॉम ए न्यू
सिस्टेमा डी इरिगाकाओ ऑटोमेटिको पैरा प्लांटस: 8 कदम
सिस्टम डी इरिगाकाओ ऑटोमेटिको पैरा प्लांटस: ए इरिगाकाओ ए उमा दास टेक्नोलॉजिआस माईस यूटिलिज़दास पोर एग्रीकल्चर पोइस एस्टा एटीविडेडे इंडिपेंडे द ओकोर्रेंसिया डे चुवास, गारंटे उमा सफ्रा यूनिफॉर्म, ए मिनिज़ास ए फालसांडो
सिस्टेमा इंटेलिजेंट डी मॉनिटरामेंटो डी एनचेंटेस (एसआईएमई): 4 कदम
सिस्टेमा इंटेलिजेंट डी मॉनिटरामेंटो डी एनचेंटेस (एसआईएमई): विषय और प्रस्ताव: फोई डेडो ओ थीम सर्विस के रूप में पी एंड यूएक्यूट; एओएस प्रतिभागियों ने हैकाथॉम क्वालकॉम फेसेंस कॉम नं. प्लाका ड्रैगनबोर्ड ४१०सी कॉम उम किट गुणवत्ता
सिस्टेमा डी सुपोर्टे ए एफिसिएन्शिया एनर्जेटिका पैरा रेफ्रिजराडोर: 14 कदम
सिस्टेमा डी सुपोर्टे ए एफिसिएन्शिया एनर्जेटिका पैरा रेफ्रिजराडोर: ओला ए टूडोस, टुडो बेम। नेस्टे प्रोजेटो एप्रेजेंटो एज़ एटापस पैरा ओ डिसेनवोल्विमेंटो डी उम सिस्टेमा डे अपियो पैरा ए गेरेंसिया डो कंसुमो ई एफिसिएन्शिया एनर्जेटिका एम रेफ्रिजराडोर्स। मास प्राइमिरो, वामोस कॉन्टेक्स्टुअलिज़र वोक डू प्रॉब्लम एज़िस्टेंट: एम टेम्पोस डे सीआर
पासोस पैरा इंस्टालर एल सिस्टेमा ऑपरेटिवो लिनक्स: १२ कदम
पासोस पैरा इंस्टालर एल सिस्टेमा ऑपरेटिवो लिनक्स: एन इस्ट इंट्रक्टेबल एप्रेंडरेमोस ए इंस्टाला एल सिस्टम ऑपरेटिवो लिनक्स