คำถามติดแท็ก pitch

4
คุณสามารถเพิ่มความละเอียดความถี่ของ FFT โดยไม่เพิ่มขนาดหน้าต่างได้หรือไม่
ฉันต้องการใช้ STFT สำหรับการวิเคราะห์แบบหลายจุด ฉันรู้ว่าการตรวจจับชิ้นงานที่มีอยู่ในสัญญาณนั้นเป็นเพียงการเริ่มต้น ยังฉันมีปัญหากับมัน 44100Hzสมมติว่าผมมีสัญญาณที่มีความถี่ตัวอย่าง 'CD' พร้อมหน้าต่างของ1024ตัวอย่างที่ฉันได้รับมติ bin 22500Hz/512=43Hzความถี่ของ นี้ก็พอเพียงที่จะมองเห็นโน้ตเปียโนสูงเช่น: และC5 = 523.251HzC#5 = 554.365 ฉันเคยคิดว่า1024ค่อนข้างเป็นหน้าต่างบานใหญ่ แต่มันอาจจะไม่ใช่และโดยปกติจะใช้หน้าต่างขนาดใหญ่กว่าเพื่อตรวจจับชิ้นงาน? สามารถเพิ่มความละเอียดความถี่ด้วยวิธีอื่นนอกเหนือจากการเพิ่มขนาดหน้าต่างซึ่งการแก้ไขเวลาแย่ลงหรือไม่ ฉันคิดถึงสองวิธี: method1: แบ่งสัญญาณออกเป็นคลื่นความถี่ด้วย bandpassfilters (เช่น0-11.25Hzและ11.25-22.5Hz) Downsample แบนด์ที่สูงขึ้นเพื่อให้ความถี่สูงดั้งเดิมตอนนี้เป็นความถี่ต่ำ (เช่นสำหรับแบนด์ที่สอง11.25-22.5Hz -> 0Hz-22.5Hz) - ไม่แน่ใจว่าเป็นไปได้ ถังขยะที่เกิดขึ้นพร้อมกันตั้งค่าด้วยฉลากที่ปรับ Method2: ใช้ชุดตัวกรอง lowpass พร้อมเพิ่มขีด จำกัด ดำเนินการ FFT เมื่อเพิ่มช่วงความถี่ สำหรับแต่ละความถี่ให้ใช้ความละเอียดที่ดีที่สุด (ถังขยะจาก FFT แรกซึ่งรวมถึงความถี่นี้) สิ่งนี้จะทำให้ความถี่ต่ำมีความละเอียดที่ดีขึ้น แต่ฉันคิดว่ามันโอเคเพราะสำหรับโน้ตที่สูงขึ้นความแตกต่างของความถี่ก็น่ากลัวกว่า ฉันจะขอบคุณข้อสังเกตใด ๆ เกี่ยวกับปัญหานี้ ฉันยังอ่านที่นี่: …
12 filters  fft  pitch  stft 

2
การตรวจจับระดับพิทช์แบบเรียลไทม์
ฉันพยายามใช้เกมร้องเพลงที่จะวิเคราะห์อินพุตไมโครโฟนดิบและบอกผู้เล่นว่าเขาร้องเพลงดีแค่ไหน ที่ต้องทำในเวลาจริง ฉันได้เจอหัวข้อมากมายที่ถามคำถามเดียวกัน แต่ฉันก็ยังไม่ได้ทำเพราะอาจขาดประสบการณ์และความรู้พื้นฐานทางคณิตศาสตร์ ฉันใช้อัลกอริทึมตามบทความของ pitch shift ของเว็บไซต์ DSPDimension: http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/ ฉันแยกความถี่และขนาดที่แท้จริงเหมือนกับที่อธิบายในบทความ แต่ฉันไม่รู้ว่าพบความถี่พื้นฐานด้วยสิ่งนี้ ฉันพยายามที่จะรับถังที่มีขนาดใหญ่ที่สุด แต่ให้ผลลัพธ์ที่ถูกต้องสำหรับสัญญาณพิทช์ที่สูงขึ้นมันไม่สำคัญว่าปัจจัยการสุ่มตัวอย่างใดที่ฉันใช้ฉันยังคงได้รับข้อมูลที่ไม่ดีสำหรับสัญญาณความถี่ต่ำ วิธีนี้ผิดหรือฉันอยู่ในเส้นทางที่ถูกต้อง แต่เพิ่งพลาดบางอย่าง ขอบคุณล่วงหน้า, แก้ไข: ฉันลืมที่จะพูดถึงว่าฉันเพียง แต่สนใจในระดับสนามดังนั้นมันก็โอเคถ้าพื้นฐานหายไป แต่ฉันมีเสียงที่ดังมากในตัวอย่าง EDIT2: ขอบคุณทุกคนฉันเพิ่งทำอัลกอริทึมรุ่นที่ใช้งานได้อย่างมีเสน่ห์ ปัญหาการประมาณระดับเสียงต่ำเกิดจากการทดสอบอินพุตของฉัน เมื่อฉันร้องโน้ตมันตรงกันอย่างถูกต้อง นอกจากนี้ฉันกำลังพิจารณาฮาร์มอนิกทั้งหมดตอนนี้ไม่ใช่แค่ยอดเขาสูงสุด

2
การแปลงค่า pitch bend (MIDI) เป็นค่า pitch“ ปกติ”
ฉันพยายามวิเคราะห์ออฟไลน์ LPC และการสังเคราะห์โดยใช้ rt_lpc (เวลาจริง LPC) การดำเนินการตามที่กำหนดที่นี่ มีฟังก์ชั่นบางอย่างภายในโปรแกรมที่สามารถใช้สำหรับการวิเคราะห์ LPC ออฟไลน์และโปรแกรมสังเคราะห์ รหัส rt_lpc นั้นส่วนใหญ่มีไว้สำหรับผู้แต่งเป็นต้นซึ่งหมายความว่ามันใช้ MIDI หรืออินพุตสัญญาณสายเสียง มีบางรหัสในโปรแกรมที่แปลงค่าระยะห่าง (ที่ได้จากการสัมพันธ์อัตโนมัติ) เป็นbendค่า ความสัมพันธ์มีดังนี้: pitch = (int)( Stk::sampleRate() / midi2pitch[ananya.data[1]] ) / pow( 1.0653f, bend/64.0f*11.0f ); power *= ananya.data[2] / 64.0f; bend = ge.data[1] / 128.0f + ge.data[2] - 64; บางจุด: เป็นวัตถุประเภทที่ดูเหมือนว่าจะมีประชากรได้ทันที ข ยังเป็นวัตถุประเภทที่ดูเหมือนว่าจะมีประชากรได้ทันที ค. …
11 music  pitch 

2
วิธีจัดการกับพื้นฐานขั้นต่ำเมื่อใช้ AMDF สำหรับการแยกพิทช์?
ฉันกำลังใช้ฟังก์ชั่นค่าความแตกต่างเฉลี่ยเพื่อประเมินความถี่พื้นฐานของสัญญาณเสียงแบบกึ่งระยะเวลา AMDF หมายถึง Dn=1N−n∑k=nN−1|Sk−Sk−n|Dn=1N−n∑k=nN−1|Sk−Sk−n| D_n = \frac{1}{N-n}\sum_{k=n}^{N-1}|S_k - S_{k-n}| ที่ไหน NNNคือความยาวของสัญญาณ ฟังก์ชั่นนี้แสดงขั้นต่ำเมื่อสัญญาณถูกเลื่อนด้วยจำนวนเท่ากับระยะเวลา นี่คือรหัสที่ฉันใช้เพื่อแยก pitch (ใน Matlab): a = amdf(f); a = a/max(a); [p l] = findpeaks(-a, 'minpeakprominence', 0.6); pitch = round(sample_freq/l(1); อย่างไรก็ตามฉันกำลังจัดการกับสัญญาณเสียงที่ความถี่พื้นฐานต่ำมาก: เป็นผลให้เกิดปัญหาการเสแสร้งเกิดขึ้น: ขั้นต่ำที่ตรวจพบสอดคล้องกับครึ่งเวลาของสัญญาณ (เช่นฮาร์โมนิที่สอง): ฉันพยายามที่จะสกัดจุดสูงสุดที่ใหญ่ที่สุดและไม่ใช่แค่ครั้งแรก แต่บางครั้งปัญหานี้ยังคงอยู่ ฉันจะปรับปรุงโค้ดและ / หรือฟังก์ชั่น AMDF เพื่อจัดการกับพื้นฐานขั้นต่ำได้อย่างไร

2
ข้อ จำกัด ของผลิตภัณฑ์ Harmonic Spectrum ในการตรวจจับพิทช์
ฉันใช้อัลกอริทึมการตรวจจับพิชชันโดยใช้ HPS และฉันประสบปัญหา ฉันเป็นผู้เริ่มต้นด้วยการประมวลผลสัญญาณและเว็บไซต์นี้ช่วยฉันมาก่อนดังนั้นฉันจึงควรถาม สำหรับสนามที่สูงขึ้น ( eg. >C6:1046.50hz) ฉันกำลังเริ่มรับข้อมูลขยะจาก HPS ยิ่งระดับเสียงสูงขึ้นเท่าไรฉันก็ยิ่งได้รับขยะมากขึ้นเท่านั้น (โดยขยะฉันหมายถึงความถี่ที่ไม่ใช่ข้อผิดพลาดระดับแปดเสียงหรือเสียงประสานและอยู่ที่ประมาณ 1Hz-20Hz) สิ่งที่ฉันสังเกตุเห็น: ผลลัพธ์นั้นเลวร้ายที่สุดสำหรับสนามที่สูงกว่าถ้าพื้นฐานอยู่เหนือ A6 หรือมากกว่านั้นฉันได้รับข้อมูลขยะเท่านั้น FFT ใช้งานได้ดีแม้ในระดับเสียงที่สูงมาก (โดยละเอียดฉันหมายถึงจุดสูงสุดของมันแสดงให้เห็นถึงพื้นฐานหรือหนึ่งเดียวของฮาร์โมนิกของมัน แต่ไม่ใช่ขยะ) ถ้าฉันลดจำนวนของฮาร์โมนิกที่ฉันคำนึงถึงสำหรับ HPS ขยะจะลดลง แต่นั่นทำให้ยากที่จะแยกแยะระหว่างพื้นฐานและฮาร์โมนิก นี่คืออัลกอริทึมของฉัน: ->raw buffer -> hann window, 16384 samples, 50% overlap -> zero padding -> FFT -> HPS ความช่วยเหลือใด ๆ ที่เป็นที่นิยม! อัปเดต 1: ดังนั้นมีอีกสองสามสิ่งที่ฉันต้องการเพิ่ม: อัตราตัวอย่างที่ฉันบันทึกที่ 44100 …

1
AMDF คืออะไร
หน้าวิกิพีเดียสำหรับฟังก์ชันความแตกต่างเฉลี่ย / สูตร (AMDF) ดูเหมือนจะว่างเปล่า AMDF คืออะไร คุณสมบัติของ AMDF คืออะไร อะไรคือจุดแข็งและจุดอ่อนของ AMDF เมื่อเทียบกับวิธีการประมาณระดับเสียงอื่น ๆ เช่นการหาค่าอัตโนมัติ?

1
การแปลงฟูริเยร์แบบไม่ต่อเนื่อง - ค้นหาพื้นฐานอย่างรวดเร็วหรือไม่
ครั้งแรกฉันขอโทษเพราะฉันเป็นนักพัฒนาซอฟต์แวร์และเป็นเวลานานมากที่ฉันไม่ได้ดำน้ำในวิชาคณิตศาสตร์ที่บริสุทธิ์ดังนั้นคำถามของฉันอาจดูเหมือนโง่ ฉันหวังว่าไม่ บริบทคือการจดจำเสียงในเพลง หากคุณจดโน้ตดนตรีและใช้การแปลงฟูริเยร์กับมันคุณจะมีจำนวนผลรวมของแอมพลิจูดไม่ จำกัด ตามความถี่ที่กำหนด ตัวอย่างเช่นถ้าฉันเล่นโน้ตที่มีพื้นฐานอยู่FFFในเครื่องดนตรีใด ๆ หลังจากการแปลงฟูริเยร์ฉันจะมีฮาร์โมนิกส์ที่ F,2F,3F,…,nFF,2F,3F,…,nFF, 2F, 3F,\ldots,nF. ความถี่ทุกความถี่จะมีแอมพลิจูดที่กำหนดซึ่งกำหนดเสียงต่ำของเครื่องดนตรี (เปียโนเสียงทรัมเป็ต ... ทั้งหมดตามรอยแยกนี้ แต่คุณจะมีแอมพลิจูดที่แตกต่างกันสำหรับทุกฮาร์โมนิก) ตอนนี้สิ่งที่ฉันต้องการจะทำคือจากสัญญาณเสียงที่ระบุค้นหา FFF. แค่นั้น. มันซับซ้อนกว่าที่คิดเพราะคุณจะมีเสียงรบกวนจากพื้นหลังเสมอ ...FFF ไม่จำเป็นต้องใช้ความถี่พร้อมแอมพลิจูดสูงสุด! ดังนั้นความคิดของฉันสำหรับการค้นหา FFF คือการใช้ DFT (จริง ๆ แล้ว FFT สำหรับความเร็ว) และค้นหาความบ้าคลั่ง FFF, ดังนั้น F+2F+3F+…+nFF+2F+3F+…+nFF + 2F +3F + \ldots + nF สูงสุดในเอาต์พุต FFT คุณคิดว่าเป็นไปได้หรือไม่ คุณคิดว่าเป็นไปได้ในเวลาอันสั้น (สมมติว่า <5 มิลลิวินาที)
9 audio  fft  pitch 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.