คุณจะบอกได้อย่างไรว่ามีสัญญาณ (เมื่อสัญญาณของคุณดูเหมือนเสียงรบกวน)


11

นี่คือเครื่องตรวจกรนของฉันอีกครั้ง

ฉันได้รับการตรวจจับสัญญาณที่ดีเมื่อมีสิ่งใดอยู่ในนั้น - สามารถติดตามจากเสียงกรนกราดผนังเพื่อการหายใจที่คุณไม่ได้ยินแม้แต่ในการบันทึก ปัญหาคือฉันไม่สามารถบอกได้เมื่อสัญญาณลดลงต่ำกว่าระดับที่ตรวจพบได้และแอพเป็นเพียง "ได้ยินสิ่ง" และน่าเสียดายที่การกรน / การหายใจมักจะผิดปกติพอที่ความสัมพันธ์แบบง่าย ๆ หรือช่วงเวลาคล้ายกันนั้นไม่น่าจะช่วยอะไรได้มากนัก (และอาจเป็นไปได้ว่าในบางกรณีเสียงดังกว่าปกติในการหายใจ)

ดังนั้นจะมีเทคนิคใดที่ฉันขาดหายไปในการหาเมื่อไม่มีสัญญาณหรือไม่? ดูเหมือนว่าฉันกำลังเผชิญหน้ากับสถานที่ที่ยากลำบากที่นี่เนื่องจาก "สัญญาณ" เป็นเสียงเริ่มต้น

(และนี่อาจเกี่ยวข้องกับปัญหาอื่นที่ฉันมี: น่าแปลกที่ฉันไม่สามารถวัดระดับสัญญาณได้อย่างแม่นยำแม้จะค่อนข้างดังเนื่องจากฉันต้องใช้ค่าเฉลี่ยและอัตราส่วนการหมุนเพื่อตรวจจับสัญญาณต่อไป ประเภทข้อมูลระดับจะหายไปฉันกำลังมองหาเทคนิคเพื่อสร้างมันขึ้นมาใหม่)

เทคนิคพื้นฐาน

(สำหรับ Yoda)

สัญญาณเสียงถูกสุ่มตัวอย่าง (โดยทั่วไปที่ 8000Hz ด้วยเหตุผลต่าง ๆ ) แล้ว FFTed ใน 1024 บล็อก (ในการทดลองของฉัน Hamming ฟิลเตอร์และบล็อกที่ทับซ้อนกันดูเหมือนจะมีผลเพียงเล็กน้อยแม้ว่าสิ่งเหล่านั้นอาจได้รับการตรวจสอบในภายหลัง)

FFT ถูกแบ่งออกเป็น "วงดนตรี" (ปัจจุบัน 5 ขนาดเอียงเล็กน้อยเพื่อวางรายละเอียดเพิ่มเติมในระดับต่ำ) และ "ความแตกต่างของสเปกตรัม" และระดับของแต่ละวงจะถูกรวมเข้าด้วยกัน ค่าเฉลี่ยระยะยาวของค่าสูงสุดที่ จำกัด ใช้เป็น "เกณฑ์" และการปรับตั้งค่าอคติต่อไปจะใช้เพื่อรักษาอัตรา "เกินเกณฑ์" ไว้ประมาณ 20%

แต่ละค่า "เกินขีด จำกัด " จะได้รับน้ำหนัก 1 (ภายใต้ขีด จำกัด จะได้รับน้ำหนักเป็น 0) แต่จากนั้นน้ำหนักนั้นจะถูกปรับโดย "ความแปรปรวน" ที่เห็นได้ชัด (ที่ประมาณ 2Hz) ในแถบความถี่เพื่อให้น้ำหนักกับแถบมากกว่า ที่มีสัญญาณที่ชัดเจนยิ่งขึ้น

น้ำหนักของวงดนตรีจะถูกนำมารวมกันและจากนั้นก็จะนำผลรวมของน้ำหนักของบล็อกที่ตามมามารวมกันประมาณหนึ่งวินาทีเพื่อสร้าง "คะแนน" วิ่ง นี่คืออีกครั้งเมื่อเทียบกับเกณฑ์เฉลี่ยที่ทำงานอยู่ (บวกกับฮิวริสติกหลายรายการ) เพื่อตรวจจับการโจมตี / กรน

ปรับปรุง

มันเกิดขึ้นกับฉันทันทีว่าหากอัลกอริทึมของฉันรักษาสัญญาณระดับคงที่ได้อย่างมีประสิทธิภาพ (ต่อปัญหาระดับสัญญาณของฉัน) วิธีการวัด SNR ที่มีประสิทธิภาพคือการวัดสัญญาณรบกวนเมื่อไม่มีสัญญาณ

สะดวก snores เป็นระยะ ๆ มีจำนวนมาก "อากาศตาย" ในระหว่าง และฉันก็ตรวจจับซองจดหมายกรนแล้ว ดังนั้นสิ่งใดก็ตามที่อยู่นอกซอง (ระหว่างปลายกรนหนึ่งและจุดเริ่มต้นของถัดไป) เป็นเสียงรบกวน! ฉันสามารถวัดความแม่นยำ / การทำซ้ำระดับเล็กน้อยได้ (ต้องใช้ความพยายามสามครั้งเพื่อสร้างอัลกอริธึมที่เหมาะสมครึ่งทาง - ความจริงไม่เคยตรงกับทฤษฎี)

ดังนั้นฉันยังไม่มีคำตอบเต็มรูปแบบ แต่ฉันได้ทำไปแล้ว

(ในขณะที่เทคนิคด้านบนทำให้ฉันมีพร็อกซีที่ดีพอสมควรสำหรับ SNR ฉันยังคงมีปัญหาในการประเมินระดับสัญญาณจริงตัวบ่งชี้ "ระดับสัมพัทธ์" ของฉันสามารถออกจากสเกลสำหรับลมหายใจที่แทบจะได้ยินไม่ได้ ฉันต้องการพร็อกซีบางประเภทสำหรับระดับที่แน่นอน)


"นี่เป็นเครื่องตรวจจับการกรนของฉันอีกครั้ง" - คุณช่วยกรุณาลิงค์ไปยังคำถามก่อนหน้าของคุณ (ซึ่งคุณได้อธิบายไว้อย่างละเอียดแล้ว) หรือเพิ่มรายละเอียดเกี่ยวกับเครื่องตรวจจับของคุณในคำถามนี้?
Lorem Ipsum

@yoda - dsp.stackexchange.com/questions/450/... , dsp.stackexchange.com/questions/1292/...และdsp.stackexchange.com/questions/1395/...
Daniel R Hicks

คำตอบ:


5

จนถึงตอนนี้คุณดูเหมือนจะระบุการกรนผ่านการปรากฏตัวของรูปแบบเป็นระยะที่แข็งแกร่งในเสียง หากคุณบอกฉันว่าอาจมีแหล่งข้อมูลอื่นที่มีคุณสมบัติเดียวกันถึงเวลาที่ต้องดำเนินการต่อและมุ่งเน้นไปที่คุณสมบัติของสัญญาณที่เฉพาะเจาะจงมากขึ้นในการนอนกรน และฉันขอแนะนำให้ดูอย่างแม่นยำมากขึ้นในเสียงต่ำของเสียงที่บันทึกไว้ เนื่องจากผู้ฟังของมนุษย์สามารถนอนกรนสูงจากการหายใจคุณอาจหันไปใช้วิธีการจำแนกสัญญาณเสียงแบบดั้งเดิม คำนวณคุณสมบัติเช่น MFCCs และรูปแบบความผันผวนของข้อมูลเสียงของคุณและฝึกอบรมตัวจําแนกเบส์ (หรือซับซ้อนยิ่งขึ้น) เพื่อแยกแยะการนอนกรนจากการหายใจ

อาจถึงเวลาทบทวนวรรณกรรมในหัวข้อ ... เช่นฉันพบสิ่งนี้: http://web.itu.edu.tr/kamasak/pubs/pdf/pm7_8_007.pdf


ปัญหาหนึ่งก็คือลักษณะของเสียงจะแตกต่างกันไปในแต่ละบุคคลและแม้แต่สำหรับบุคคลเดี่ยวในช่วงกลางคืน แต่ขอบคุณสำหรับปม - ฉันจะดูพวกเขา
Daniel R Hicks

หากชุดการฝึกอบรมของคุณมีขนาดใหญ่พออาจเป็นไปได้โดยใช้เทคนิคการเรียนรู้ของเครื่อง
pichenettes

ฉันมีชุดข้อมูลเกินกว่า 50 ชุด น่าเสียดายที่อัลกอริทึมที่ทำงานได้อย่างสมบูรณ์แบบในหนึ่งชุดนั้นล้มเหลวอย่างน่าสังเวชในครั้งถัดไป บางคนมีทีวีไปในพื้นหลังบางคนมีตัวจัดการอากาศเสียงดังก้อง ฯลฯ หายใจ / กรนสามารถได้ยินเสียงแทบจะไม่หรือสีลอก หัวเรื่องอาจเปลี่ยนตำแหน่งและเปลี่ยนลักษณะทั้งหมดของการกรน จำเป็นต้องมีชุดรูปแบบของการปรับตัวเองบางอย่างชัดเจน
Daniel R Hicks

คุณใช้คุณสมบัติใดในการจำแนกประเภท?
pichenettes

ส่วนใหญ่เป็นเพียง "ความแตกต่างของสเปกตรัม" (หรือเรียกอีกอย่างว่า "สเปกตรัมการไหล") เพื่อตรวจจับ "การโจมตี" และ "ชดเชย" แต่รูปแบบปัจจุบันของฉันแบ่งสเปกตรัมออกเป็นแถบและ "น้ำหนัก" แต่ละกลุ่มขึ้นอยู่กับความแรงของสัญญาณที่ชัดเจนในแถบนั้น วิธีนี้ใช้งานได้ดีในการตรวจจับการหายใจ / การกรนในช่วงระดับเสียงทั้งหมดแม้จะมีเสียงรบกวนอย่างมีนัยสำคัญ และเพียงแค่ดูระดับเสียงทั้งหมดพร้อมกันไม่ทำงานเนื่องจากปัญหาเสียงรบกวน
Daniel R Hicks

0

คุณอาจต้องสร้างตัวจําแนกแบบไดนามิกที่สามารถปรับให้เข้ากับเรื่องปัจจุบันระยะการสลีปและสภาพแวดล้อมของเสียงแทนที่จะปรับเป็นชุดฝึกอบรมแบบคงที่


นั่นคือสิ่งที่ฉันคิด
Daniel R Hicks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.