2009-01-12 43 views
18

Có lễ hội công nghệ cao này ở IIT-Bombay, Ấn Độ, nơi họ có một sự kiện được gọi là "Artbots", nơi chúng tôi dự định thiết kế các nghệ nhân có khả năng nghệ thuật. Tôi đã có một ý tưởng về một robot âm nhạc mà có một bài hát như đầu vào, phát hiện các ghi chú trong bài hát và chơi nó trở lại trên một cây đàn piano. Tôi cần một số phương pháp giúp tôi tính toán nốt nhạc của bài hát. Bất kỳ ý tưởng/gợi ý về cách đi về nó?Phát hiện tần số cơ bản

Trả lời

1

Bạn đã thử Wikipedia's article on pitch detection? Nó chứa một vài tài liệu tham khảo có thể thú vị với bạn.

Ngoài ra, đây là số list of DSP applications and libraries, nơi bạn có thể xem xung quanh. Danh sách này chỉ đề cập đến các gói phần mềm Linux, nhưng nhiều trong số chúng là nền tảng chéo và có rất nhiều mã nguồn mà bạn có thể xem xét.

Chỉ cần thông tin, phát hiện quảng cáo chiêu hàng trong bản ghi âm đơn âm nằm trong tầm với của hầu hết những người hiểu biết về DSP. Phát hiện các nốt của tất cả các ghi chú, bao gồm cả hợp âm và các công cụ, khó hơn rất nhiều.

0

Về cơ bản, bạn cần một máy phân tích phổ. Bạn có thể có một FFT trên bản ghi đầu vào tương tự, nhưng phụ thuộc nhiều vào độ phân giải của bản ghi.

0

gì ngay lập tức nói đến cái tâm của tôi:

  • lọc ra tần số rất thấp (trống, bass-line),
  • lọc ra tần số cao (giai điệu)
  • FFT,
  • nhìn cho đỉnh trong đầu ra FFT cho giai điệu

Tôi không chắc chắn, nếu nó hoạt động cho âm thanh rất đa âm - có thể googling cho "FFT, analysi s, giai điệu, v.v. " sẽ trả về thêm thông tin về các vấn đề có thể xảy ra.

liên quan

13

Đây chính là những gì tôi đang làm gì ở đây như dự án năm cuối cùng của tôi :) trừ một điều mà dự án của tôi là về việc theo dõi cao độ của giọng hát con người (và tôi không có robot để phát giai điệu)

Cách nhanh nhất tôi có thể nghĩ là sử dụng BASS library. Nó chứa chức năng sẵn sàng sử dụng có thể cung cấp cho bạn dữ liệu FFT từ thiết bị ghi mặc định. Hãy xem ví dụ mã "livespec" đi kèm với BASS.

Nhân tiện, dữ liệu FFT thô sẽ không đủ để xác định tần suất cơ bản. Bạn cần thuật toán như Harmonic Product Spectrum để lấy F0.

Một xem xét khác là nguồn âm thanh. Nếu bạn đang đi để làm FFT và áp dụng hài hòa sản phẩm Spectrum trên đó. Bạn sẽ cần đảm bảo đầu vào chỉ có một nguồn âm thanh. Nếu nó chứa nhiều nguồn như trong các bài hát hiện đại, sẽ có nhiều tần số để xem xét.

Harmonic Spectrum sản phẩm Lý thuyết

Nếu tín hiệu đầu vào là một nốt nhạc, sau đó phổ của nó nên bao gồm một loạt của đỉnh, tương ứng với tần số cơ bản với điều hòa thành phần ở bội số nguyên của tần số cơ bản là . Do đó khi chúng tôi nén quang phổ một số lần (downsampling), và so sánh nó với phổ ban đầu, chúng ta có thể thấy rằng đỉnh hài hòa mạnh nhất dòng lên. Đỉnh đầu tiên trong phổ ban đầu trùng với đỉnh thứ hai trong phổ được nén bởi hệ số của hai, trùng với đỉnh thứ ba trong quang phổ được nén theo hệ số ba. Do đó, khi các phổ khác nhau là nhân với nhau, kết quả sẽ là tạo thành đỉnh rõ ràng ở tần số cơ bản .

Phương pháp

Đầu tiên, chúng tôi chia tín hiệu đầu vào thành phân đoạn bằng cách áp dụng một cửa sổ Hanning, nơi kích thước cửa sổ và kích thước hop là đưa ra là một đầu vào. Đối với mỗi cửa sổ, , chúng tôi sử dụng Biến đổi ngắn hạn Fourier để chuyển đổi tín hiệu đầu vào từ miền thời gian sang miền tần số . Khi đầu vào nằm trong miền tần số , chúng tôi áp dụng kỹ thuật Spectonic Product Spectrum cho mỗi cửa sổ.

HPS bao gồm hai bước: lấy mẫu và nhân lên. Để mẫu xuống, chúng tôi đã nén quang phổ hai lần trong mỗi cửa sổ bằng cách lấy lại mẫu: lần đầu tiên, chúng tôi nén phổ ban đầu theo hai và lần thứ hai, theo ba. Sau khi hoàn tất , chúng tôi nhân ba số phổ với nhau là và tìm tần suất tương ứng với đỉnh cao nhất (giá trị tối đa). Tần số cụ thể này thể hiện tần số cơ bản của cửa sổ cụ thể đó.

Hạn chế của phương pháp HPS

Một số tính năng tốt đẹp của phương pháp này bao gồm: đó là tính toán rẻ, hợp lý kháng phụ và tiếng ồn nhân giống, và điều chỉnh để loại khác nhau của đầu vào. Ví dụ: chúng tôi có thể thay đổi số lượng phổ được nén thành sử dụng và chúng tôi có thể thay thế quang phổ phép nhân với phổ bổ sung. Tuy nhiên, do nhận thức của con người là quan điểm về cơ bản là logarit, điều này có nghĩa là các quảng cáo chiêu hàng thấp có thể là được theo dõi ít ​​chính xác hơn so với độ cao quảng cáo chiêu hàng.

Một thiếu hụt nghiêm trọng khác của phương pháp HPS là độ phân giải của nó là chỉ tốt bằng độ dài của FFT được sử dụng để tính phổ. Nếu chúng tôi thực hiện FFT ngắn và nhanh, chúng tôi là bị giới hạn về số lượng tần suất rời rạc mà chúng tôi có thể xem xét. Theo thứ tự để đạt được độ phân giải cao hơn trong đầu ra của chúng tôi (và do đó thấy ít hơn độ hạt trong sản lượng chiêu hàng của chúng tôi), chúng tôi cần phải thực hiện FFT dài hơn mà cần nhiều thời gian hơn.

từ: http://cnx.org/content/m11714/latest/

+3

Làm thế nào để điều này đối phó với sự vô hình của các nhạc cụ thực sự? Các giai điệu đang ngày càng sắc nét từ các bội số lý tưởng cao hơn bạn đi. – endolith

4

Chỉ cần một lời nhận xét: Hàm điều hoà cơ bản có thể cũng bị mất từ một âm thanh (điều hòa), điều này không thay đổi pitch nhận thức. Như trường hợp giới hạn, nếu bạn lấy một sóng vuông (ví dụ, ghi chú C#) và hoàn toàn loại bỏ hài hòa đầu tiên, ghi chú cảm nhận vẫn là C#, trong cùng quãng tám. Theo một cách nào đó, bộ não của chúng ta có thể bù đắp cho sự vắng mặt của một số sóng hài, ngay cả cái đầu tiên, khi nó đoán một ghi chú. Do đó, để phát hiện quảng cáo chiêu hàng với các kỹ thuật miền tần số, bạn nên tính đến tất cả các sóng hài (giá trị cực đại của biến đổi Fourier) và trích xuất một số "ước số chung lớn nhất" của tần số của chúng. Phát hiện quảng cáo chiêu hàng không phải là vấn đề tầm thường ...

DAFX có khoảng 30 trang dành riêng cho phát hiện quảng cáo chiêu hàng, với các ví dụ và mã Matlab.

1

Chỉ cần suy nghĩ - nhưng bạn có cần xử lý luồng âm thanh kỹ thuật số làm đầu vào không?

Nếu không, hãy cân nhắc sử dụng biểu diễn âm nhạc tượng trưng (chẳng hạn như MIDI). Các nốt nhạc của nốt nhạc sau đó sẽ được trình bày rõ ràng, và bạn có thể tổng hợp âm thanh (và chuyển động) tương ứng với độ cao, nhịp điệu và nhiều thông số âm nhạc khác cực kỳ dễ dàng.

Nếu bạn cần phân tích luồng âm thanh kỹ thuật số (mp3, wav, đầu vào trực tiếp, v.v.) hãy lưu ý rằng khi phát hiện âm thanh đơn âm là khá tiên tiến, phát hiện âm lượng đa âm là một vấn đề chưa được giải quyết. Trong trường hợp này, bạn có thể tìm thấy câu trả lời của tôi cho this question hữu ích.

1

Đối với giải nén tần số cơ bản của giai điệu từ nhạc chuông đa âm bạn có thể thử các Melodia plug-in: http://mtg.upf.edu/technologies/melodia

Extracting của F0 của tất cả các công cụ trong một bài hát (đa F0 theo dõi) hoặc sao chép chúng vào ghi chú là một nhiệm vụ khó khăn hơn. Cả hai giai điệu khai thác và phiên âm nhạc vẫn còn mở vấn đề nghiên cứu, vì vậy bất kể thuật toán/công cụ bạn sử dụng không mong đợi để có được kết quả hoàn hảo cho một trong hai.

1

Nếu bạn đang cố gắng phát hiện ghi chú của bản ghi âm đa âm (nhiều ghi chú cùng một lúc) chúc may mắn. Đó là một vấn đề rất khó khăn. Tôi không biết cách nào để nghe, nói, một bản ghi của một tứ tấu đàn dây và có một thuật toán tách biệt bốn giọng nói. (Wavelets có lẽ?) Nếu nó chỉ là một lưu ý tại một thời điểm, có một số thuật toán theo dõi sân ra khỏi đó, nhiều người trong số họ được đề cập trong các ý kiến ​​khác.

Thuật toán bạn muốn sử dụng sẽ tùy thuộc vào loại nhạc bạn đang nghe. Nếu bạn muốn nó đón mọi người hát thì có rất nhiều thuật toán tốt được thiết kế đặc biệt cho giọng nói. (Đó là nơi mà hầu hết các nghiên cứu là.) Nếu bạn đang cố gắng để chọn cụ cụ thể bạn sẽ phải sáng tạo hơn một chút. Thuật toán bằng giọng nói có thể đơn giản vì phạm vi giọng nói của con người nói chung chỉ giới hạn ở khoảng 100-2000 Hz. (Phạm vi phát biểu hẹp hơn nhiều). Tuy nhiên, các tần số cơ bản trên đàn piano, đi từ khoảng 27 Hz. đến 4200 Hz., vì vậy bạn đang xử lý phạm vi rộng hơn thường bị bỏ qua bởi thuật toán phát hiện giọng nói. Hình dạng sóng của hầu hết các nhạc cụ sẽ khá phức tạp, với rất nhiều sóng hài, do đó, một cách tiếp cận đơn giản như đếm số không hoặc chỉ lấy tự tương quan sẽ không hoạt động. Nếu bạn biết khoảng tần số bạn đang tìm kiếm trong bạn có thể thấp vượt qua bộ lọc và sau đó số không. Tôi nghĩ rằng bạn muốn được tốt hơn mặc dù với một thuật toán phức tạp hơn như các sản phẩm hài hòa Spectrum được đề cập bởi người dùng khác, hoặc YAAPT ("Tuy nhiên một thuật toán cho Pitch Theo dõi"), hoặc một cái gì đó tương tự.

Một vấn đề cuối cùng: một số công cụ, piano nói riêng, sẽ có vấn đề thiếu nguyên tắc cơ bản và không có vũ khí. Thiếu nguyên tắc cơ bản có thể được xử lý bởi các thuật toán theo dõi sân ... trong thực tế, họ phải được kể từ khi nguyên tắc cơ bản thường được cắt ra trong truyền dẫn điện tử ... mặc dù có thể bạn sẽ vẫn nhận được một số lỗi octave. Tuy nhiên, sự khống chế sẽ cung cấp cho bạn các vấn đề nếu ai đó chơi một nốt nhạc ở quãng tám dưới cùng của cây đàn piano. Thuật toán theo dõi sân bình thường không được thiết kế để đối phó với tính không hòa âm bởi vì giọng nói của con người không phải là không hòa âm đáng kể.

Các vấn đề liên quan