นี่คือเครื่องตรวจกรนของฉันอีกครั้ง
ฉันได้รับการตรวจจับสัญญาณที่ดีเมื่อมีสิ่งใดอยู่ในนั้น - สามารถติดตามจากเสียงกรนกราดผนังเพื่อการหายใจที่คุณไม่ได้ยินแม้แต่ในการบันทึก ปัญหาคือฉันไม่สามารถบอกได้เมื่อสัญญาณลดลงต่ำกว่าระดับที่ตรวจพบได้และแอพเป็นเพียง "ได้ยินสิ่ง" และน่าเสียดายที่การกรน / การหายใจมักจะผิดปกติพอที่ความสัมพันธ์แบบง่าย ๆ หรือช่วงเวลาคล้ายกันนั้นไม่น่าจะช่วยอะไรได้มากนัก (และอาจเป็นไปได้ว่าในบางกรณีเสียงดังกว่าปกติในการหายใจ)
ดังนั้นจะมีเทคนิคใดที่ฉันขาดหายไปในการหาเมื่อไม่มีสัญญาณหรือไม่? ดูเหมือนว่าฉันกำลังเผชิญหน้ากับสถานที่ที่ยากลำบากที่นี่เนื่องจาก "สัญญาณ" เป็นเสียงเริ่มต้น
(และนี่อาจเกี่ยวข้องกับปัญหาอื่นที่ฉันมี: น่าแปลกที่ฉันไม่สามารถวัดระดับสัญญาณได้อย่างแม่นยำแม้จะค่อนข้างดังเนื่องจากฉันต้องใช้ค่าเฉลี่ยและอัตราส่วนการหมุนเพื่อตรวจจับสัญญาณต่อไป ประเภทข้อมูลระดับจะหายไปฉันกำลังมองหาเทคนิคเพื่อสร้างมันขึ้นมาใหม่)
เทคนิคพื้นฐาน
(สำหรับ Yoda)
สัญญาณเสียงถูกสุ่มตัวอย่าง (โดยทั่วไปที่ 8000Hz ด้วยเหตุผลต่าง ๆ ) แล้ว FFTed ใน 1024 บล็อก (ในการทดลองของฉัน Hamming ฟิลเตอร์และบล็อกที่ทับซ้อนกันดูเหมือนจะมีผลเพียงเล็กน้อยแม้ว่าสิ่งเหล่านั้นอาจได้รับการตรวจสอบในภายหลัง)
FFT ถูกแบ่งออกเป็น "วงดนตรี" (ปัจจุบัน 5 ขนาดเอียงเล็กน้อยเพื่อวางรายละเอียดเพิ่มเติมในระดับต่ำ) และ "ความแตกต่างของสเปกตรัม" และระดับของแต่ละวงจะถูกรวมเข้าด้วยกัน ค่าเฉลี่ยระยะยาวของค่าสูงสุดที่ จำกัด ใช้เป็น "เกณฑ์" และการปรับตั้งค่าอคติต่อไปจะใช้เพื่อรักษาอัตรา "เกินเกณฑ์" ไว้ประมาณ 20%
แต่ละค่า "เกินขีด จำกัด " จะได้รับน้ำหนัก 1 (ภายใต้ขีด จำกัด จะได้รับน้ำหนักเป็น 0) แต่จากนั้นน้ำหนักนั้นจะถูกปรับโดย "ความแปรปรวน" ที่เห็นได้ชัด (ที่ประมาณ 2Hz) ในแถบความถี่เพื่อให้น้ำหนักกับแถบมากกว่า ที่มีสัญญาณที่ชัดเจนยิ่งขึ้น
น้ำหนักของวงดนตรีจะถูกนำมารวมกันและจากนั้นก็จะนำผลรวมของน้ำหนักของบล็อกที่ตามมามารวมกันประมาณหนึ่งวินาทีเพื่อสร้าง "คะแนน" วิ่ง นี่คืออีกครั้งเมื่อเทียบกับเกณฑ์เฉลี่ยที่ทำงานอยู่ (บวกกับฮิวริสติกหลายรายการ) เพื่อตรวจจับการโจมตี / กรน
ปรับปรุง
มันเกิดขึ้นกับฉันทันทีว่าหากอัลกอริทึมของฉันรักษาสัญญาณระดับคงที่ได้อย่างมีประสิทธิภาพ (ต่อปัญหาระดับสัญญาณของฉัน) วิธีการวัด SNR ที่มีประสิทธิภาพคือการวัดสัญญาณรบกวนเมื่อไม่มีสัญญาณ
สะดวก snores เป็นระยะ ๆ มีจำนวนมาก "อากาศตาย" ในระหว่าง และฉันก็ตรวจจับซองจดหมายกรนแล้ว ดังนั้นสิ่งใดก็ตามที่อยู่นอกซอง (ระหว่างปลายกรนหนึ่งและจุดเริ่มต้นของถัดไป) เป็นเสียงรบกวน! ฉันสามารถวัดความแม่นยำ / การทำซ้ำระดับเล็กน้อยได้ (ต้องใช้ความพยายามสามครั้งเพื่อสร้างอัลกอริธึมที่เหมาะสมครึ่งทาง - ความจริงไม่เคยตรงกับทฤษฎี)
ดังนั้นฉันยังไม่มีคำตอบเต็มรูปแบบ แต่ฉันได้ทำไปแล้ว
(ในขณะที่เทคนิคด้านบนทำให้ฉันมีพร็อกซีที่ดีพอสมควรสำหรับ SNR ฉันยังคงมีปัญหาในการประเมินระดับสัญญาณจริงตัวบ่งชี้ "ระดับสัมพัทธ์" ของฉันสามารถออกจากสเกลสำหรับลมหายใจที่แทบจะได้ยินไม่ได้ ฉันต้องการพร็อกซีบางประเภทสำหรับระดับที่แน่นอน)