Мазмуну:

Автомат системасы Localizador De Vazamentos: 11 кадам
Автомат системасы Localizador De Vazamentos: 11 кадам

Video: Автомат системасы Localizador De Vazamentos: 11 кадам

Video: Автомат системасы Localizador De Vazamentos: 11 кадам
Video: Самые Удивительные Факты о «TOYOTA» которые вы не знали. История Японской компании Тойота. 2024, Ноябрь
Anonim
Автомат системасы Localizador De Vazamentos
Автомат системасы Localizador De Vazamentos

Төмөнкү приоритеттер эмоционалдуу түрдө иштей алат, ал эми атрибуттар реалдуу иштейт, сенсор пьезоэлектро, жабдуулар эч кандай соло эмес, локалдык жерди аныктоо, процессин аныктоо нейрону, нейрон, мүмкүн болгон нерселер. uma tubulação.

DRAGONBOARD 410c орнотулган алгоритмдерди орнотуу процесси абдан маанилүү. Төмөнкү кызматтар эч качан иштебейт: Integência Жасалма проектиси боюнча эч кандай процесс жок.

Бул жерде Hackaton Qualcomm жок, бул TecnoFACENS жана Facenade de Engenharia de Sorocaba (FACENS), долбоорлорду ишке ашыруу үчүн дипломдук иштерди бүтүрүү үчүн, Энео Жулиано Бовино, Фелипе Ксавье, Лукас де Росе Гомес Поло и Роналду П. Гомес Поло. Даниэль де Кастро Пачеконун Нью -Йорктогу университеттери менен Бело горизонттогу долбоорлорунун катышуучулары. FACENS, Lucas Nunes Monteiro жана Felipe Crispim да Silva Salvagnini, англис тилин үйрөнүү программасы.

1 -кадам: Lista De Materiais

Lista De Materiais
Lista De Materiais

Төмөнкү долбоорлорду ишке ашыруу үчүн, материалдарды колдонуңуз:

1 Arduino Due

1 Dragonboard 410c

2 Драйверлер автоматтык түрдө оңдоп -түзөө үчүн:

4 Транзистор BC548

4 Diodos 1n4007

4 Resistores 4k7Ω W

1 Servo мотору үчүн айдоочу:

1 Транзистор BC548

1 Diodos 1N4007

1 Resistores 4k7Ω ¼ W

1 Чычкан USB

1 Teclado USB

1 Монитор

1 Кабо HDMI

1 Robô De Esteiras - Plataforma Zumo

1 Crimalheira жана англис тилиндеги кичинекей диспозитивдер

1 Servo мотор 9г

2 -кадам: Adaptação Mecânica

Image
Image

Сенсордук пьезо сенсорунун позициясы, керектүү фаза, ал үчүн керектүү болгон нерселер, анекдоттор, конфигурацияланган анекзоддор, фаберликтер 3D форматында жасалат, жана сиз өзүңүзгө керектүү нерселерди жасай аласыз. аткаруу ылдамдыгы, оңдоп-түзөө плазмасын колдонуу, фитна дупла жүзү, конфигурациялоо.

3 -кадам: Acionamento Dos Motores

Obtenção Do Áudio
Obtenção Do Áudio

Автомобилдик кыймылдаткычтар автоматтык түрдө ZUMO драйверлерин орнотуу үчүн, драйверлерди орнотуу үчүн, сервистик моторго ылайыктуу түрдө, драйверлерди орнотуу үчүн, драйверлерге окшоштуруп, драйверлерди орнотуу керек. um motor de corente Continua ea segunda o driver servo motor.

4 -кадам: Obtenção Do Áudio

Vibudosão de áudio das vibrações solo, foil utilizado de desenvolvido como parto de de enenharia mecatrônica dos gradandos Lucas Nunes Monteiro e Felipe C. da Silva Salvagnini, télérécété dérécété décélécénité de lécérécététét de l'érécétététét de décérécétéo de lérérécét. электрондук почта [email protected].

Бул сенсор пьезоэлектрондук пункттун жардамы менен, сиз чынжырчаны жана амплификацияны жакшырта аласыз.

100 Гц жана 800 Гц жыштыкта иштөө үчүн. Конфигурациянын сезгичтиги боюнча конфигурациялоо 3 кГцке чейин, Nyquist теоремасында да, жыштыгында да, бул жерде да жыштык болуп саналат.

A Aquisição é habilitada e desabilitada através da interrupção do Arduino DUE.

5 -кадам: Do Arduino DUE конфигурациясы (linguagem C)

Configuração Do Arduino DUE (linguagem C)
Configuração Do Arduino DUE (linguagem C)

Сүрөттөмө кайра англисче (Кошмо Штаттар) тилине которулсун Которуу Devando a grand quantitade de dados, cerca de 3000 pontos segundo, do do inteiro de 32 bit, to do dispositivo de sensoriamento e needários процесс of dosgoritmos on DRAGONBOARD 410c, foi utilizado or Arduino DUE páro analogo de usa como de uno de la usa. Процедуранын эң чоң талабы - бул Shield интерфейсинин жардамы менен DRAGONBOARD 410c менен Grove Seeed Sensor Mezzanine орнотуу, ATmega 328 микроконтроллёрлору жана процесстери.

O Arduino DUE файлдарды конфигурациялоо үчүн QUALCOMM DRAGONBOARD 410c комуникалдык серия аркылуу.

Arduino foram жок конфигурацияланганда:

Колдонуу акысыз;

DRAGONBOARD 410c үчүн кошумча маалымат;

Программаны караңыз:

#камтыйт #аныктоо Numb_Sample 3000 #аныктоо DAC_Input A0

#аныктоо SERVO 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); if (ind <Numb_Sample) DAC [ind ++] = analogRead (DAC_Input); эгер (Scont

1); // 50% жумуш цикли

TC_SetRC (tc, channel, rc); TC_Start (tc, канал); tc-> TC_CHANNEL [канал]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // habilita os registradores tc-> TC_CHANNEL [канал]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // desabilita os registradores NVIC_EnableIRQ (irq); // habilita interrupção}

жараксыз орнотуу ()

{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // In Timer // TC_Stop (TC1, 0); pinMode (SERVO, OUTPUT); }

боштук цикл ()

{/*// while (! Serial.available ()); char rc; // = Serial.read (); int indice = 0; if (rc == 0) {while (! Serial.available ()); rc = Serial.read (); switch (rc) {case 1: indice = 0; while (! Serial.available ()); while ((rc = Serial.read ())! = 0xFF) {индекс << = 8; indice += rc; while (! Serial.available ()); } Serial.print (0); Serial.print (2); SendNumber (DAC [индекс]); Serial.print (0xFF); тыныгуу; 3 -жагдай: while (! Serial.available ()); if ((Serial.read ()) == 0xFF) {SNow = PosServoMax; кечигүү (500); ind = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; кечигүү (500); Serial.print (0); Serial.print (4); Serial.print (0xFF); } тыныгуу; }} else if (rc == '2') {Serial.print ("Серво моторун сыноо / n"); while (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print ("Mode 1 / n"); SNow = PosServoMax; } if (rc == '2') {Serial.print ("Mode 2 / n"); SNow = PosServoMin; }} */ SNow = PosServoMax; кечиктирүү (100); SNow = PosServoMin; кечиктирүү (100); }

6 -кадам: Interfaceamento Das Tecnologias

Das Tecnologias интерфейси
Das Tecnologias интерфейси

Сүрөттөмө кайра англисче (Кошмо Штаттар) тилине которулсун Которуу A comunicacao dos atos entre o Arduíno DUE ea DRAGONBOARD 410c, in интерфейс интерфейс оффицированные интересны, что ополчительные интерфейс, вы может интерфейс USB CDC при время DUE ea DRAGONBOARD. KERNEL да DRAGONBOARD 410cту кайра түзүү керек, бул тез ылдамдыкта.

7 -кадам: DRAGONBOARD 410c конфигурациясы (Python)

DRAGONBOARD 410c конфигурациясы (Python)
DRAGONBOARD 410c конфигурациясы (Python)

Конфигурацияны орнотуу үчүн Arduino DUE колдонуучулар үчүн акы төлөбөстөн, акысыз өткөрүп берүү керек. Segue código abaixo.

Байкоо: Колдонууга эч кандай чектөө жок, бирок бул функциялар колдонулбаганы үчүн, Ардуино DUE e o Mezzanine серемасы туура келбейт. Бул USB интерфейсинин жардамы менен, KERNEL жана DRAGONBOARD 410c үчүн эң зарыл болгон нерселердин бири болуп саналат.

импорттоо убактысы

# Configuração da conexão serial

ser = serial. Serial (port = '/dev/ttyAMC0', #tty96B0 ', baudrate = 250000, parity = serial. PARITY_NONE, stopbits = serial. STOPBITS_ONE, bytesize = serial. EIGHTBITS)

ser.isOpen ()

басып чыгаруу ('Төмөндө буйруктарыңызды киргизиңиз. / r / nКолдонмодон чыгуу үчүн "чыгуу" киргизиңиз.')

киргизүү = 1

while 1: input = input (">>") if if == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE ser.write (1) # Envia o comando para or Arduino DUE transmitir os dados coletados

lista =

i үчүн (3000):

ser.write (i/256) ser.write ((i <0: out = ser.read (2) if (out == 0x0002): atual = 0 c = ser.read (1) while (c! = 0xFF)): atual << 8 atual += cc = ser.read (1) lista.append (atual)

8 -кадам: INTERPRETAÇU DOS ARQUIVOS DE AUDIO

INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO
INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

WA форматында WAV форматында сүйлөшүүлөрдү жүргүзүү үчүн, сенсорлорду орнотуу керек, жана TCC менен автоматтык түрдө автоматтык түрдө иштөө, долбоорлорду ишке ашыруу, номерлердин номерлери жана эрежелерин бекитүү 10. PYTHON 3 программасы боюнча WAV жана башка CSV программалары менен сүйлөшүүлөрдү жүргүзүү керек. Жүктөө алгоритмдерин жүктөө.

Эсептөө алгоритмдери системанын негизги функциялары болуп саналат, жана бул Arduino DUE жана эссе тизмелеринин номерлери.

# коддоо: utf-8

# Csv үчүн аудиолордун сүйлөшүүлөрү

# MÓDULOS UTILIZADOS

импорт толкуну импорт

# FUNÇÃO PARA КОНВЕРТЕР 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 1 (data_file)) сигнал = 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', index = False) кайтаруу df

# CARREGANDO DATA FRAME COM OS DADOS DO AUDIO

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 = audio_to_csv (file_name_ 'df_]

# GRÁFICO DO ESPECTRO DE AUDIO

фигура, (ax1, ax2) = plt.subplots (nrows = 2, ncols = 1, figzize = (20, 10)) ax1.plot (df_vazamento ['time'], df_vazamento ['amp']) ax1.set_title ('Solo com Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold'}) ax1.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 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]) Figure.tight_layout (h_pad = 5) plt.show ()

9 -кадам: Анализ Visual Do Sinal

Анализа Visual Do Sinal
Анализа Visual Do Sinal
Анализа Visual Do Sinal
Анализа Visual Do Sinal
Анализа Visual Do Sinal
Анализа Visual Do Sinal

Com o PYTHON 3 é realizada a transformada de Fourier, este artificio matemático realiza a transformação do sinal do domínio do tempo para o domínio da chastência, жана башка аналитикалык варианттар, жыштыктар, эбегейсиз чоңдуктар. Көрсөтмөлөрдү берүү Фурьенин профессионалдык коммюникесинде өзгөчө мааниге ээ, жана алар дагы бар. Автоматтык түрдө автоматтык түрдө алгоритмдерди ишке ашыруу үчүн колдонмонун бардык түрлөрү иштейт.

Чектөөлөр 100 Гц менен 800 Гцке чейин, жыштыктардын диапазонундагы бардык нерселердин айырмасы жок.

# коддоо: utf-8# Фурьенин трансформациясы үчүн процесстер колдонулат

pd катары импорттоо pp импорт numpy катары matplotlib импорттук толкун катары plt# Função que realiza a transformada de Fourier e plota os gráficos for análise def Fourier (df_list): Fs = 44100; Hz Ts = 1.0/Fs таксинин амострагеми; # Intervalo de amostragem y = pd.concat (df_list) t = y ['time'] # Vetor de tempos y = y ['amp'] # Vetor de amplitudes n = len (y) # Cominal of do sinal k = np. arange (n) T = n/Fs frq = k/T frq = frq [диапазон (n // 2)] Y = np.fft.fft (y)/n Y = Y [диапазон (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 ('Time') ax [0].set_ylabel ('Amplitude') ax [1].plot (frq, abs (Y), 'r') ax [1].set_xlim ([100, 800]) ax [1].set_ylim ([0, max_lim]) ax [1].set_xlabel ('Freq (Hz)') ax [1].set_ylabel ('| Y (freq) |') plt.show () return frq, abs (Y)# Функциянын аткарылышы CSV жана Чуркоо боюнча Фурьенин read_csv (file_name, init, final): df = pd.read_csv (file_name + '.csv') df.columns = ['amp', ' time '] delta = final-init if init*44100> len (df) or final*44100> len (df): init = (len (df)/44100) -delta if init = 100) & (df [' freq '] <= 800)] mx = иреттелген (df [' amp ']) басып чыгаруу ("Média das amplitudes:", np.round (np.mean (mx)))) print ("Percentuais em relação a média das amplitudes.") print ("100 maiores amplitudes", np.mean (mx [-100):]) // df ['amp']. mean ()*100, "%", sep = "") print ("50 maiores amplitudes:", np.mean (mx [-50:]) // df ['amp']. mean ()*100, "%", sep = "") print ("10 maiores amplitudes:", np.mean (mx [-10:]) // df ['amp']. орточо ()*100, "%", sep = "") басып чыгаруу ("Maior амплитудасы:", np.mean (mx [-1:]) // df ['amp']. орточо ()*100, " %", sep =" ") read_csv ('Solo_com_Vazamento', 2, 10) # Exemplo de gráficos para vazamentoread_csv ('Solo_sem_Vazamento', 2, 10) # Exemplo de gráficos para semamentamento

10 -кадам: Algoritmo Em R Para Extração Das өзгөчөлүктөрү Dos Dados

Algoritmo Em R Para Extração Das өзгөчөлүктөрү Dos Dados
Algoritmo Em R Para Extração Das өзгөчөлүктөрү Dos Dados
Algoritmo Em R Para Extração Das өзгөчөлүктөрү Dos Dados
Algoritmo Em R Para Extração Das өзгөчөлүктөрү Dos Dados

Алгоритмдерди иштеп чыгуу жана иштетүү боюнча кошумча функциялар (карактеристикалык) колдонулган.

Алгоритмдерди аныктап алуу керек болсо, нейрон утилизациясы зарыл болгон нерселердин бардыгын аныктайт, ошондо буларды табууга болот.

Алгоритмдердин бардыгы операциялык операциялар менен жүргүзүлөт, бул жерде сиз эквиваленттүү эмес маалыматтарга ээ болосуз, жана жеке мүнөздөмөлөрүңүзгө окшош.

Estas өзгөчөлүктөрү компьютерлердин компосттары боюнча маалыматтын түрүн камтыйт, бул маалыматтын ачыктыгын жана каржылык көрсөткүчтөрдүн маанисин түшүндүрөт.

Алгоритмдин негизги бөлүктөрү GitHub электрондук дарегине шилтеме берген жок, бирок бул долбоорду өзгөртүүгө мүмкүндүк берет.

Программалык камсыздоонун алгоритмдери бекер болсо, R студиясынан интерпретаторду жүктөп алыңыз.

Кошумча мүнөздөмөлөр:

  • Meanfreq: орточо жыштык (кГц менен)
  • sd: жыштыктын стандарттык четтөөсү
  • медиана: медианалык жыштык (кГц менен)
  • Q25: биринчи квантил (кГцте)
  • Q75: үчүнчү квантил (кГцте)
  • IQR: интерванттык диапазон (кГцте)
  • кыйшайуу: кыйшыктык (specprop сүрөттөмөсүндөгү эскертүүнү караңыз)
  • курт: куртоз (specprop сүрөттөмөсүндөгү эскертүүнү караңыз)
  • sp.ent: спектралдык энтропия
  • sfm: спектралдык тегиздик
  • режим: режимдин жыштыгы
  • центроид: жыштык центроид (спецпропту караңыз)
  • peakf: пик жыштыгы (эң жогорку энергия менен жыштык)
  • Meanfun: акустикалык сигнал боюнча өлчөнгөн негизги жыштыктын орточо көрсөткүчү
  • minfun: акустикалык сигнал боюнча өлчөнгөн минималдуу фундаменталдык жыштык
  • maxfun: акустикалык сигнал боюнча өлчөнгөн максималдуу негизги жыштык
  • meandom: акустикалык сигнал боюнча өлчөнүүчү басымдуу жыштыктын орточо көрсөткүчү
  • mindom: акустикалык сигнал боюнча өлчөнүүчү басымдуу жыштыктын минимуму
  • maxdom: акустикалык сигнал боюнча өлчөнүүчү басымдуу жыштыктын максимуму
  • dfrange: акустикалык сигнал боюнча өлчөнүүчү басымдуу жыштык диапазону
  • modindx: модуляция индекси. Негизги жыштыктардын чектеш өлчөөлөрүнүн топтолгон абсолюттук айырмасы катары жыштык диапазонуна бөлүнөт
  • энбелги: агып кетүү же агуусуз

Algoritmo колдонмо:

пакеттер <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071') if (узундугу (setdiff (пакеттер, rownames (install.packages ()))))> 0) {install.packages (setdiff (пакеттер, rownames (install.packages ()))))}

китепкана (tuneR)

китепкана (seewave) китепкана (caTools) китепкана (rpart) китепкана (rpart.plot) китепкана (randomForest) китепкана (warbleR) китепкана (чычкандар) китепкана (xgboost) китепкана (e1071)

specan3 <- function (X, bp = c (0, 22), wl = 2048, threshold = 5, parallel = 1) { # Параллель иштетүүнү колдонуу үчүн: китепкана (devtools), install_github ('nathanvan/parallelsugar') if (class (X) == "data.frame") {if (all (c ("sound.files", "selec", "start", "end") % % colnames (X))) {баштоо <- 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))} else stop (paste (c ("sound.files", "selec", "start", "end") [! (c ("sound.files", "selec", "start", "end") % in % colnames (X))], оодаруу = ","), "мамычалар (лар) маалымат алкагынан табылган жок"))} else stop ("X - маалымат алкагы эмес")) #эгерде баштоо же аяктоодо НАлар бар болсо (эгерде (is.na (c (аягы, башталышы))))) токтосо ("Башында жана/же аягында НАлар табылат") #if аягы же башталышы сандык эмес if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' and 'selec' must be digital") #if any start end end end if if any (end - start <0)) stop (paste ("Башталышы enден жогору d ичинде ", узундугу (кайсы (аягы - баштоо20))) токтоо (чаптоо (узундугу (бул (аягы - баштоо> 20)))," тандоо (лор) 20 сек. ")) варианттары (show.error.messages = TRUE) #if bp вектор же узундук эмес! = 2 токтоочу болсо (! is.vector (bp)) stop ("'bp' 2 узундугунун сандык вектору болушу керек) else {if (! length (bp) == 2) stop ("'bp' 2 узундугунун сандык вектору болушу керек")} #кайтаруу эскертүүсү, эгерде бардык үн файлдары табылбаса fs <- list.files (path = getwd (), pattern = ".wav $", ignore.case = TRUE) if (узундук (уникалдуу (sound.files [(sound.files % in % fs)])))! = узундук (уникалдуу (sound.files)))) cat (paste (узундук (уникалдуу (үн. файлдар))-узундук (уникалдуу (sound.files [(sound.files % in % fs)])))), ".wav файлдары табылган жок")) #жумушчу каталогдогу үн файлдарынын саны жана эгер 0 токтоп калса d <- кайсы (sound.files % in % fs) if (length (d) == 0) {stop (".wav файлдары жумушчу каталогдо жок")} башка {баштоо <- баштоо [d] аягы <- аягы [d] selec <- selec [d] sound.files <- sound.files [d]} # Эгерде параллель сандык эмес болсо (! is.umeric (parallel)) stop ("'parallel" must 1 "узундугунун сандык вектору бол Windows ", шаарддагNamespace (" parallelsugar ", тынч = TRUE) == TRUE)) lapp <- function (X, FUN) parallelsugar:: mclapply (X, FUN, mc.cores = parallel) else if if (Sys.info () [1] == "Windows")) {cat ("Windows колдонуучулары параллелдүү эсептөө үчүн" parallelsugar "пакетин орнотушу керек (сиз азыр андай кылбайсыз!)") Lapp <- pbapply:: pblapply} else lapp <- милдети (X, FUN) parallel:: mclapply (X, FUN, mc.cores = parallel)} else lapp <- pbapply:: pblapply options (эскертүү = 0) if (parallel == 1) cat ("Акустикалык параметрлерди өлчөө:")) x <- as.data.frame (lapp (1: узундук (баштоо), функция (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), тартып) баштоо , = аягына чейин , бирдиктер = "секунд") b шып ([email protected]/2000) - 1) b [2] < - шып ([email protected]/2000) - 1 #жыштык спектри анализи songspec <- seewave:: spec (r, f = [email protected], plot = FALSE) анализ <- seewave:: specprop (songspec, f = [email protected], flim = c (0, 280/1000), сюжет = ЖАЛГАН) #сактоо параметрлери Meanfreq <- анализ $ орточо/1000 sd <- анализ $ sd/1000 медиан <- анализ $ медианасы/1000 Q25 < - анализ $ QQ75 <- анализ $ QIQR <- анализ $ IQR/1000 кыйшайуу <- анализ $ skewness kurt <- анализ $ kurtosis sp.ent <- анализ $ sh sfm <- анализ $ sfm режими <- анализ $ режими/1000 центроид <- анализ $ цент/1000 #Амплитудалык чокуларынын чокусу чокусу <- 0 #seewave:: fpeaks (songspec, f = [email protected], wl = wl, nmax = 3, plot = FALSE) [1, 1] #Негизги жыштык параметрлери ff <- seewave:: fund (r, f = [email protected], ovlp = 50, threshold = threshold, fmax = 280, ylim = c (0, 280/1000), plot = FALSE, wl = wl) [, 2] Meanfun <-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, plot = F, threshold = threshold, bandpass = b * 1000, fftw = TRUE) [, 2] meandom <- орточо (y, na.rm = TRUE) mindom <- min (y, na.rm = TRUE) maxdom <- max (y, na.rm = TRUE) dfrange <- (maxdom- mindom) узактыгы <- (аягы - баштоо ) #модуляция индексин эсептөө <- вектор () үчүн (j турган (! na (y))) {өзгөртүү <- abs (y [j]- y [j + 1]) өзгөрөт <- тиркөө (өзгөртүүлөр, өзгөртүү)} if (mindom == maxdom) modindx <-0 башка modindx <- орточо (өзгөртүүлөр, na.rm = T)/dfrange #сактоо жыйынтыктары кайтарылат (с (узактыгы, meanfreq, sd, медианасы, Q25, Q75, IQR, кыйшык, курт, sp.ent, sfm, режими, центроид, пикф, meanfun, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))})) # #натыйжа аттарын өзгөртүү rounames (x) <- c ("узактыгы", "Meanfreq", "sd", "медианасы", "Q25", "Q75", "IQR", "кыйшык", "курт", "sp.ent", "sfm", "режим", "centroid", "peakf", "Meanfun", "minfun", "maxfun", "meandom", "mindom", "maxdom", "dfrange", "modindx") x <- data.frame (sound.files, selec, 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 <- data.frame () # Папкадагы файлдардын тизмесин алуу. тизме <- list.files (folderName, '\. wav') # Файлдардын тизмесин data.frameге иштетүү үчүн кошуу. for (fileName in list) {row <- data.frame (fileName, 0, 0, 20) data <- rbind (data, row)} # Колоннанын аттарын коюу. аттар (маалыматтар) <- c ('sound.files', 'selec', 'start', 'end') # Иштетүү үчүн папкага жылдыруу. setwd (folderName) # Файлдарды иштетүү. акустика <- specan3 (data, parallel = 1) # Ата папкага кайра жылыңыз. setwd ('..') акустика}

гендер <- милдети (filePath) {эгер (! бар болсо ('genderBoosted')) {load ('model.bin')} # Орнотуу жолдору. currentPath <- getwd () fileName <- basename (filePath) жол <- dirname (filePath) # Файлды окуу үчүн каталогду коюңуз. setwd (path) # Бош data.frame менен баштаңыз. data <- data.frame (fileName, 0, 0, 20) # Колоннанын аттарын коюу. аттар (маалыматтар) <- c ('sound.files', 'selec', 'start', 'end') # Процесс файлдары. акустика <- specan3 (data, parallel = 1) # Калыбына келтирүү жолу. setwd (currentPath) болжолдоо (genderCombo, newdata = акустика)}

# Маалыматтарды жүктөө

Leakage <- processFolder ('caminho para o pasta com sample de áudio com vazamento') without_leakage <- processFolder ('caminho para o pasta com sample de áudio sem vazamento')

# Энбелгилерин коюңуз.

Leakage $ label <- 1 without_leakage $ label <- 2 data <- rbind (leakage, without_leakage) data $ label <- factor (data $ label, labels = c ('leakage', 'without_leakage'))

# Колдонулбаган мамычаларды алып салуу.

маалымат $ Duration <- NULL data $ sound.files <- NULL data $ selec <- NULL data $ peakf <- NULL

# NA камтыган саптарды алып салуу.

маалыматтар <- маалыматтар [толук.каптар (маалыматтар),]

# Csv маалымат топтомун жазыңыз.

write.csv (маалыматтар, файл = 'features.csv', sep = ',', row.names = F)

11 -кадам: Нейронду өчүрүү

Rede Neural
Rede Neural

Бул нейронду кайра калыбына келтирүү үчүн, автоматтык түрдө автоматтык түрдө атмосфераны жаңыртуу, сенсордук системаны калыбына келтирүү.

Бул жерде MLP (Multilayer Perceptron) нейрон колдонулушу керек, жана сиз өзүңүздү караңыз, ал автоматтык түрдө автоматтык түрдө автоматтык түрдө автоматтык түрдө жабдылган жок.

Керек болгон нерселер сиз үчүн эң маанилүү болуп саналат. Жөнөкөй жыйынтыктар жокко чыгарылбагандай болуп, бул жердеги бардык нерселер үстүртөн чечилип, ар кандай жолдор менен бөлүнүп турат.

Тест тестирлөөсү жүзөгө ашырылгандан кийин, ал 100%га чейин, тестирлөөнүн дагы башка түрлөрү, ошондой эле анекса менен да байкалат.

Алгоритмдер колдонулганда, бул режимди кайра калыбына келтирүү үчүн дагы бир жолу керек. Алгоритмдин жоктугунан эч кандай айырмачылык жок, бул реалдуу режимде же кийинчерээк жаңы режимде да, жаңы режимде да реалдуу режимде.

# коддоо: utf-8

pd катары импорттоо

sklearn.model_selection дан np катары импорттоо import_test_split

# Leitura dos dados CSV менен иштейт

df = pd.read_csv ('features.csv') # Бөлүштүрүлгөн программалар df_X = df [df.columns [: len (df.columns) -1] # Фильтрандо df_X = df_X

# Separando dados para treino e teste

X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)

# Criando modelo de rede neuronal

modelo = MLP (alpha = 0.0001, learning_rate_init = 0.0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10000, активация = 'tanh', solver = 'lbfgs')

# Treinando режими

modelo.fit (X_train, Y_train) жыйынтыгы = modelo.predict (X_test)

# Imprimindo жыйынтыктары

report = cr (Y_test, result) mat = cm (y_pred = натыйжа, y_true = Y_test) басып чыгаруу ("Matriz de confusão") басып чыгаруу (мат, end = "\ n / n") басып чыгаруу ("Relatório de Classificação") басып чыгаруу (отчет)

Сунушталууда: