Სარჩევი:

სამზარეულოს პერსონალური ხმის იდენტიფიკატორი: 4 ნაბიჯი
სამზარეულოს პერსონალური ხმის იდენტიფიკატორი: 4 ნაბიჯი

ვიდეო: სამზარეულოს პერსონალური ხმის იდენტიფიკატორი: 4 ნაბიჯი

ვიდეო: სამზარეულოს პერსონალური ხმის იდენტიფიკატორი: 4 ნაბიჯი
ვიდეო: სამზარეულოს ომები — გადაცემა 9 [სეზონი 8] 2024, ნოემბერი
Anonim
Image
Image
სამზარეულოს პერსონალური ხმის იდენტიფიკატორი
სამზარეულოს პერსონალური ხმის იდენტიფიკატორი

ამ გაზაფხულზე ჩვენი ინტერაქტიული სისტემების კურსის საბოლოო პროექტისთვის, ჩვენ შევქმენით რეალურ დროში სისტემა სამზარეულოში გავრცელებული ბგერების იდენტიფიკაციისა და ვიზუალიზაციისათვის მხარდაჭერა-ვექტორული მანქანების კლასიფიკაციის გამოყენებით. სისტემა შედგება ლეპტოპისგან აუდიო შერჩევის/კლასიფიკაციისათვის და ვიზუალიზაციისთვის Arduino/dot matrix ჩვენებისათვის. ქვემოთ მოცემულია სახელმძღვანელო ამ სისტემის საკუთარი ვერსიის შესაქმნელად თქვენი სამზარეულოს ბგერებისათვის.

ჩვენი თავდაპირველი გამოყენების შემთხვევა იყო როგორც მოწყობილობა ყრუ და სმენადაქვეითებული სამზარეულოსთვის, მაგრამ ეს სისტემა თეორიულად შეიძლება მორგებული იყოს სხვადასხვა კონტექსტში ბგერების კომპლექტის დასადგენად. სამზარეულო იყო იდეალური ადგილი დასაწყებად, რადგან ის შედარებით მშვიდია და შეიცავს გონივრულ რაოდენობას მარტივ, განსხვავებულ ბგერებს.

ამ პროექტის GitHub საცავი შეგიძლიათ იხილოთ აქ.

მარაგები

  • არდუინო ლეონარდო მიკროკონტროლი სათაურებით
  • KEYESTUDIO 16x16 Dot Matrix LED ჩვენება Arduino– სთვის
  • პურის დაფის მხტუნავი მავთული
  • Micro-USB to USB 2.0 კაბელი
  • ლეპტოპი Jupyter Notebook– ით (ანაკონდას მონტაჟი)

    დამწყებთათვის სახელმძღვანელო Jupyter Notebook– ისთვის შეგიძლიათ იხილოთ აქ

  • შეუსაბამო რაოდენობით LEGO აგური სისტემის საცხოვრებლისთვის

    (მაგრამ თქვენ ნამდვილად შეგიძლიათ ჩაანაცვლოთ ეს თქვენთვის სასურველი ნებისმიერი სამშენებლო მასალით!)

ნაბიჯი 1: სამზარეულოს ხმის ნიმუშების შეგროვება

სამზარეულოს ხმის ნიმუშების შეგროვება
სამზარეულოს ხმის ნიმუშების შეგროვება

ფიგურა ზემოთ: ჩანგლისა და დანის ჩაწერის შედეგად მიღებული აუდიო მონაცემები ამ შეგროვების პროცესის გამოყენებით

რეალურ დროში ბგერების გამოვლენის მიზნით, ჩვენ უნდა მივაწოდოთ მანქანათმცოდნეობის მოდელს შედარების ხარისხის მაგალითები. ჩვენ შევქმენით Jupyter რვეული ამ პროცესისთვის, რომლის წვდომა შესაძლებელია აქ ან ჩვენი პროექტის GitHub საცავის საშუალებით. საცავი ასევე შეიცავს ნიმუშის კოლექციებს ორი განსხვავებული სამზარეულოსგან ტესტირების მიზნით.

ნაბიჯი 1.1: დააკოპირეთ CollectSamples.ipynb რვეული თქვენს სამუშაო Jupyter Notebook დირექტორიაში და გახსენით იგი.

ნაბიჯი 1.2: გაუშვით თითოეული უჯრედი სათითაოდ, მიაქციეთ ყურადღება ჩვენს სათაურებში მოცემულ შენიშვნებს. გაჩერდით, როდესაც მიაღწევთ ერთს სახელწოდებით "ნიმუშის ჩაწერა".

შენიშვნა: რამოდენიმე პითონის ბიბლიოთეკა გამოიყენება ამ ნოუთბუქში და თითოეული მოითხოვს ინსტალაციას, სანამ ისინი წარმატებით იქნება შემოტანილი პროექტში. კეთილი იყოს თქვენი მობრძანება ამის ხელით, თუმცა ბიბლიოთეკის ინსტალაციის სახელმძღვანელო Jupyter Notebook– ში შეგიძლიათ იხილოთ აქ.

ნაბიჯი 1.3: შექმენით ცარიელი დირექტორია, რომ შეინახოთ თქვენი ნიმუშები თქვენს სამუშაო დირექტორიაში ამ პროექტისათვის.

ნაბიჯი 1.4: შეცვალეთ SAMPLES_LOCATION ცვლადი "ნიმუშის ჩაწერა" უჯრედში, რათა შეესაბამებოდეს თქვენი ცარიელი დირექტორიის ადგილმდებარეობას.

ნაბიჯი 1.5: დაამატეთ ან წაშალეთ რაც შეიძლება მეტი ბგერა SOUND_LABELS ცვლადზე.

იმისათვის, რომ ჩაწერის კოდის ნიმუში იმუშაოს, ამ ცვლადის თითოეული ხაზი უნდა იყოს გამოყოფილი მძიმით და შემდეგი ფორმით:

'ts': ხმა ("TargetedSound", "ts")

ნაბიჯი 1.6: როდესაც ყველა ეტიკეტი დაემატა, შეაფასეთ "ნიმუშის ჩაწერა" უჯრედი ნიმუშის შეგროვების პროცესის დაწყებით. უჯრედის გამომავალში თქვენ მოგეთხოვებათ ჩაწეროთ მოკლე კოდი, რომელიც თითოეულ ბგერას უკავშირებთ ეტიკეტებში (ანუ „ts“TargetedSound– ისთვის). ნუ გააკეთებ ამას ჯერჯერობით.

ნაბიჯი 1.7: წაიღეთ ლეპტოპი სამზარეულოში და განათავსეთ ის ადგილი, სადაც სავარაუდოდ განათავსებთ მზა სისტემას. ეს ადგილი უნდა იყოს ცენტრალური კარგი აუდიო კოლექციისთვის და მშრალი და დაშორებული ნებისმიერი შესაძლო დაღვრისგან თქვენი ელექტრონიკის დასაცავად.

ნაბიჯი 1.8: მოამზადეთ თქვენი პირველი მიზნობრივი ხმა. თუ ეს არის ღუმელის ქრონომეტრის სიგნალი, შეგიძლიათ დააყენოთ ტაიმერი ერთ წუთზე და დაელოდოთ მის გამოთვლას 20 წამამდე ან მომდევნო საფეხურზე გადასვლამდე.

ნაბიჯი 1.9: ჩაწერეთ ეტიკეტის კოდი მოთხოვნაში (ანუ "ts") და დააჭირეთ Enter/Return.

სისტემა დაიწყებს ოთახის ხმაურისგან განსხვავებული ხმის მოვლენის მოსმენას. ამ ხმოვანი მოვლენის შეგრძნებისთანავე დაიწყება ჩაწერა მანამ, სანამ არ იგრძნობს ოთახში ბგერის დაბრუნებას გარემოს დონეზე. შემდეგ ის შეინახავს აუდიოს 16-ბიტიანი WAV ფაილის სახით SAMPLES_LOCATION- ში განსაზღვრულ დირექტორიაში ფორმატში:

TargetedSound _#_ გადაღებული. ტალღა

ამ ფაილის # ნაწილი შეესაბამება თქვენს მიერ შეგროვებული სამიზნე ხმის ნიმუშების რაოდენობას. WAV ფაილის შენახვის შემდეგ, მოთხოვნა განმეორდება, რაც საშუალებას მოგცემთ შეაგროვოთ ერთი და იგივე ხმის რამდენიმე ნიმუში უჯრედის ერთ შესრულებაში.

არ შეცვალოთ ეს ფაილის სახელი. ეს მნიშვნელოვანია შემდეგი ნაბიჯისათვის.

ნაბიჯი 1.10: გაიმეორეთ ნაბიჯები 1.8 და 1.9 სანამ არ შეაგროვებთ თითოეული ბგერის 5-10 ნიმუშს.

ნაბიჯი 1.11: შეასრულეთ "x" დასრულების შემდეგ, რათა გამოხვიდეთ შესრულებიდან.

გაფრთხილება: ამ გზით საკნიდან გასვლა შეიძლება გამოიწვიოს რვეულის ჩამონგრევა. ამ შემთხვევაში, ნოუთბუქის ბირთვი უნდა გადატვირთოთ და თითოეული უჯრედი კვლავ გაუშვა ზემოდან.

ნაბიჯი 1.11 (სურვილისამებრ): შეამოწმეთ ინდივიდუალური ფაილების WAV მონაცემები "სწრაფი ხმის ვიზუალიზაციის" უჯრედში, რათა დარწმუნდეთ, რომ თქვენ აიღეთ ყველა სასურველი ინფორმაცია.

რამდენიმე რჩევა:

  • ჩაწერეთ როდესაც თქვენი სამზარეულო წყნარია.
  • ჩაწერეთ მხოლოდ ერთი ხმა ერთდროულად. სისტემას არ შეუძლია განასხვავოს ბგერების გადახურვა.
  • შეეცადეთ თითოეული ხმოვანი ტესტი მაქსიმალურად თანმიმდევრული გახადოთ. ეს ხელს შეუწყობს იდენტიფიკაციის სიზუსტეს.
  • ჩაწერის უჯრედის ხელახალი შეფასება აღადგენს # მნიშვნელობას ფაილის სახელში და გადააწერს ყველა არსებულ ფაილს, რომელიც ემთხვევა ამ # ნომერს. ჩვენ ყველაზე მარტივად აღმოვაჩინეთ ერთი ხმის ყველა ნიმუშის ერთდროულად ჩაწერა, შემდეგ კი ჩანაწერის უჯრედის შეჩერება.
  • თუ სისტემა არ იღებს თქვენს მიზნობრივ ხმას, შეეცადეთ შეამციროთ THRESHOLD მნიშვნელობა (დაყენება 30 – ზე დასაწყებად) და გადააფასეთ უჯრედი.
  • თუ ჩაწერა გააქტიურებულია მიზნობრივი ხმის მიღმა სხვა ბგერებით, შეეცადეთ გაზარდოთ THRESHOLD მნიშვნელობა (დააყენეთ 30 – ის დასაწყებად) და გადააფასეთ უჯრედი.

ნაბიჯი 2: არდუინოს/მატრიცის ჩვენების მომზადება

არდუინოს/მატრიცის ჩვენების მომზადება
არდუინოს/მატრიცის ჩვენების მომზადება
არდუინოს/მატრიცის ჩვენების მომზადება
არდუინოს/მატრიცის ჩვენების მომზადება
არდუინოს/მატრიცის ჩვენების მომზადება
არდუინოს/მატრიცის ჩვენების მომზადება

შემდეგი, ჩვენ ვაპირებთ ვიზუალიზაციის სისტემის შექმნას Arduino Leonardo და KEYESTUDIO 16x16 LED წერტილოვანი მატრიცის გამოყენებით. ეს არის გამოვლენილი კლასიფიკაციის მოდელის პროგნოზირება გამოვლენილი ბგერების შესახებ. როგორც ადრე, ჩვენ მივაწოდეთ ყველა საჭირო ფაილი როგორც აქ, ასევე პროექტის GitHub საცავში.

ნაბიჯი 2.1: შეაერთეთ Arduino და LED მატრიცა ზემოთ დიაგრამის მიხედვით. KEYESTUDIO მოიცავს მავთულხლართებს მათ წერტილოვან მატრიქსთან დასაკავშირებლად, მაგრამ ამ მავთულხლართების არდუინოს დასაკავშირებლად დაგჭირდებათ პურის დაფის მავთულები.

ნაბიჯი 2.2: გახსენით "arduino_listener.ino" Ardunio IDE გამოყენებით და ატვირთეთ ლეონარდოში. თუ სწორად არის დაკავშირებული, თქვენ უნდა ნახოთ "მოსმენის" ხატი (ჰგავს Wi-Fi- ს), როგორც ეს მოცემულია ზემოთ მოცემულ სურათზე.

ნაბიჯი 2.3: მოამზადეთ ხატები, რომელთა ჩვენებაც გსურთ თითოეული თქვენი სამიზნე ბგერისთვის. იმის გასაგებად, თუ რომელი LED- ები უნდა აინთოს, ხატი არდუინოდან უნდა გაიგზავნოს მატრიცაში, როგორც ბაიტი მასივი. მაგალითად, ჩვენი ყავის ჭიქის ხატი (სურათზე ზემოთ) იგზავნება მატრიცაში ამ ფორმატში:

{

0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf7, 0xfb, 0xfb, 0xfb, 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};

ჩვენ დავხატეთ ჩვენი ხატები Dot2Pic ონლაინ ინსტრუმენტის გამოყენებით, 16 სვეტით, 16 სტრიქონით და "მონოქრომატული, 8 პიქსელი თითო ბაიტზე, ვერტიკალური პარამეტრი" შერჩეული ჩამოსაშლელი მენიუდან. ჩვენი შეიძლება მოიძებნოს "sample_icon_bytes.txt" მასივში.

შენიშვნა: ასევე შეიძლება არსებობდეს ონლაინ ინსტრუმენტები, რომელთაც შეუძლიათ ამის გაკეთება ავტომატურად ატვირთული ფაილებით.

ნაბიჯი 2.4: დახაზეთ თითოეული ხატი. ხატვის დასრულების შემდეგ აირჩიეთ "მასივში გადაყვანა".

ნაბიჯი 2.5: სურვილისამებრ შეცვალეთ "arduino_listening.ino" კოდის ზედა ნაწილში განსაზღვრული არასაჭირო ხატები. დარწმუნდით, რომ დაამატეთ კომენტარი, რომელიც აღწერს ხატს, რათა გახსოვდეთ რომელია რომელი!

ნაბიჯი 2.6: ატვირთეთ ახალი კოდი Arduino– ში. ჯერ არ დახუროთ ფაილი, ჩვენ დაგვჭირდება ის შემდეგი ნაბიჯისათვის.

ნაბიჯი 3: კლასიფიკატორის გაშვება და ბგერების ამოცნობა

კლასიფიკატორის გაშვება და ბგერების ამოცნობა
კლასიფიკატორის გაშვება და ბგერების ამოცნობა
კლასიფიკატორის გაშვება და ბგერების ამოცნობა
კლასიფიკატორის გაშვება და ბგერების ამოცნობა

ახლა დროა გავაერთიანოთ სისტემა. კლასიფიკაციის მილსადენი, Arduino კომუნიკაცია და ცოცხალი აუდიო გადაღება ხდება ერთი Arduino რვეულის საშუალებით, რომელიც აქ არის მოწოდებული ან მისი წვდომა შესაძლებელია ჩვენი პროექტის GitHub საცავის საშუალებით.

ნაბიჯი 3.1: დააკოპირეთ FullPipeline.ipynb რვეული თქვენს სამუშაო Jupyter Notebook დირექტორიაში და გახსენით იგი.

ნაბიჯი 3.2: გაუშვით თითოეული უჯრედი სათითაოდ, მიაქციეთ ყურადღება ჩვენს სათაურებში მოცემულ შენიშვნებს. გამოსავალი არ არის მოსალოდნელი. გაჩერდით, როდესაც მიაღწევთ უჯრედს სახელწოდებით "ჩატვირთეთ ტრენინგის მონაცემები".

ნაბიჯი 3.3: შეცვალეთ SAMPLES_LOCATION_ROOT ცვლადი "ჩატვირთეთ სწავლების მონაცემები" უჯრედში თქვენი ადრინდელი საქაღალდის ნიმუშის მდებარეობის მშობლის დირექტორიაში. შემდეგ შეცვალეთ SAMPLES_DIR_NAME ცვლადი თქვენი დირექტორია. ასე რომ, თუ მითითებული გაქვთ ადგილმდებარეობა CollectSamples.ipynb– ზე:

SAMPLES_LOCATION = "/მომხმარებლები/xxxx/Documents/KitchenSoundClassifier/MySamples/NewDir"

თქვენ ახლა დააყენებთ ამ ცვლადებს:

SAMPLES_LOCATION_ROOT = "/მომხმარებლები/xxxx/Documents/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"

ჩვენ ეს შევძელით კლასიფიკატორში სწრაფი ცვლილებების შეტანა უზუსტობის შემთხვევებში. თქვენ შეგიძლიათ გადახვიდეთ სხვადასხვა ნიმუშის კოლექციებს შორის თქვენი მონაცემების გასაუმჯობესებლად.

ნაბიჯი 3.4: შეაფასეთ უჯრედი. თქვენ უნდა ნახოთ თითოეული კოლექცია წარმატებით დატვირთული.

ნაბიჯი 3.5: განაგრძეთ თითოეული უჯრედის სათითაოდ გაშვება, ყურადღება მიაქციეთ სათაურებში მითითებულ შენიშვნებს.

ნაბიჯი 3.6: გაჩერდით, როდესაც მიაღწევთ "Messaging Arduino" უჯრედს. განსაზღვრეთ სერიული პორტი, რომელსაც თქვენი კომპიუტერი გამოიყენებს Arduino– სთან კომუნიკაციისთვის PORT_DEF ცვლადში. ამის ნახვა შეგიძლიათ Arduino IDE– ში და გადადით ინსტრუმენტები> პორტი.

დამატებითი ინფორმაცია შეგიძლიათ იხილოთ აქ.

ნაბიჯი 3.8: გახსენით თქვენი Arduino IDE. იმ ადგილებში, სადაც თქვენ შეიტანეთ ცვლილებები ხატებში, ჩაწერეთ ასო მასივის მნიშვნელობის გვერდით, მაგრამ არ შეცვალოთ იგი. ქვემოთ მოყვანილ მაგალითში ეს არის "g".

// ნაგვის გატანა <ხელმოუწერელი ნახ., 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};

ნაბიჯი 3.7: (ნოუთბუქის "Messaging Arduino" უჯრედში დაბრუნება) შეცვალეთ ეტიკეტები self.sounds ლექსიკონში, რათა შეესაბამებოდეს იმ ლეიბლებს, რომლებიც გამოიყენეთ თქვენი ნიმუშების ჩაწერაში, დარწმუნდით, რომ თითოეული ეტიკეტი შეესაბამება ერთ წერილს, რომელიც აღნიშნეთ წინაში ნაბიჯი. "ჩაწერა" და "მოსმენა" ორივე ძირითადი სისტემის ფუნქციონირების ნაწილია და არ უნდა შეიცვალოს. არ შეცვალოთ მეორე ასო, თუ არ დარწმუნდებით იმაში, რომ დამატებით ცვლილებებს შეიტანთ არდუინოს კოდშიც, რადგან სხვაგვარად ის გაგიფუჭებთ კომუნიკაციას არდუინოსთან/მატრიცასთან.

ნაბიჯი 3.8: გაუშვით ძირითადი ფუნქცია! კოდი აიღებს ტრენინგის მონაცემებს, ამოიღებს მის ძირითად მახასიათებლებს, მიაწვდის მათ მილსადენს, შექმნის კლასიფიკაციის მოდელს, შემდეგ დაიწყებს ხმოვანი მოვლენების მოსმენას. როდესაც ის იგრძნობს ერთს, თქვენ დაინახავთ, რომ მატრიცა იცვლება ჩაწერის სიმბოლოზე (კვადრატი შიგნით წრით) და ის დაანაწევრებს ამ მონაცემებს და შესავსებს მას მოდელში. რასაც მოდელი წინასწარმეტყველებს, გამოჩნდება რამოდენიმე წამის შემდეგ მატრიცის ჩვენებაზე.

თქვენ შეგიძლიათ მიყევით უჯრედის გამომუშავებას ქვემოთ. ნახეთ რამდენად ზუსტი შეგიძლიათ მიიღოთ ის!

ნაბიჯი 4: LEGO საცხოვრებლის შექმნა

LEGO საცხოვრებლის შექმნა
LEGO საცხოვრებლის შექმნა
LEGO საცხოვრებლის შექმნა
LEGO საცხოვრებლის შექმნა
LEGO საცხოვრებლის შექმნა
LEGO საცხოვრებლის შექმნა

ეს არის სახალისო ნაწილი! თქვენ გაატარეთ მანქანათმცოდნეობის ყველა სერიოზული ნაბიჯი და ამოქმედდა მთელი სისტემა ბოლომდე და ახლა თქვენ თამაშობთ LEGO– ებთან ერთად, როგორც ჯილდო. აქ არ არის ბევრი დეტალური პროცესი. ჩვენ უბრალოდ დავამატეთ ბლოკები, რომლებიც მოგვწონს აქა -იქ, საერთო დიზაინზე ზედმეტი ფიქრის გარეშე და საბოლოოდ კმაყოფილი აღმოვჩნდით.

ნება მიეცით ჩვენს სურათებს იყოს შთაგონება თქვენი სამზარეულოსთვის უნიკალური თქვენი შემოქმედებითი საცხოვრებლისთვის. არდუინო და გაყვანილობის უმეტესი ნაწილი მოვათავსეთ ღრუში, შემდეგ დავაფიქსირეთ ზემოთ მატრიცის ჩვენება გადახურებით. ჩვენ დავამატეთ ცოტაოდენი ქაღალდი ეკრანზე, რათა ოდნავ გავფანტოთ სინათლე, რაც ვგრძნობდით, რომ ხატები უფრო მკაფიო გახდა.

გირჩევთ: