在音樂和聲音領域,有一場關於頻率的有趣爭論,引起了音樂家、歷史學家和科學家的注意。這次討論的核心是 432 Hz,通常被稱為「宇宙的自然頻率」。今天,我將帶您完成建立 Web 應用程式的旅程,該應用程式可以分析音訊檔案以確定它們是否調整到這個神秘的頻率。
在深入了解技術細節之前,讓我們先了解一下 432 Hz 的重要性。這個頻率不是任意選擇的——它有深刻的歷史根源。巴赫和貝多芬等音樂傳奇人物將他們的樂器調至 A=432 Hz,認為這是與宇宙本身產生共鳴的自然調音。
但是,這種情況在第二次世界大戰期間發生了變化,標準改為 440 Hz。有些人認為 440 赫茲會產生一種微妙的緊張和焦慮感,與無線電靜電相比。相較之下,432 Hz 據說可以促進音樂的和諧和自然流動。無論您是否相信這些效果,分析音訊的技術挑戰仍然令人著迷。
我們的應用程式是使用現代網路技術和科學計算庫建立的:
我們應用程式的核心是快速傅立葉變換 (FFT) 演算法。 FFT 將我們的音訊訊號從時域轉換到頻域,使我們能夠識別一段音樂中的主要頻率。
分析的工作原理如下:
audio = AudioSegment.from_file(io.BytesIO(file_content)).set_channels(1) # Convert to mono samples = np.array(audio.get_array_of_samples()) sample_rate = audio.frame_rate
fft_vals = rfft(samples) fft_freqs = rfftfreq(len(samples), d=1/sample_rate) dominant_freq = fft_freqs[np.argmax(np.abs(fft_vals))]
tolerance = 5 # Hz result = ( f"The dominant frequency is {dominant_freq:.2f} Hz, " f"{'close to' if abs(dominant_freq - 432) <= tolerance else 'not close to'} 432Hz." )
我們的 FastAPI 後端處理音訊處理的繁重工作。以下是主要功能:
文件驗證
音訊處理管
錯誤處理
API 簡單而有效:
audio = AudioSegment.from_file(io.BytesIO(file_content)).set_channels(1) # Convert to mono samples = np.array(audio.get_array_of_samples()) sample_rate = audio.frame_rate
該應用程式提供了一個簡單的介面:
關鍵功能之一是頻率的智慧解釋。該應用程式不僅告訴您主頻率,還解釋其意義:
fft_vals = rfft(samples) fft_freqs = rfftfreq(len(samples), d=1/sample_rate) dominant_freq = fft_freqs[np.argmax(np.abs(fft_vals))]
解釋系統為不同頻率範圍提供上下文:
此功能不僅可以幫助使用者了解頻率的數值,還可以幫助使用者了解其音樂和歷史背景,使該工具更具教育意義和吸引力。
增強分析
使用者功能
建造這款頻率分析儀是一次音樂、歷史和技術交叉的激動人心的旅程。無論您是對 432 Hz 現象感興趣的音樂家,還是對音頻處理感到好奇的開發人員,我希望這個項目能夠為我們如何分析和理解構成音樂世界的頻率提供寶貴的見解。
完整的原始碼可以在 GitHub 上找到,我歡迎貢獻和改進建議。請隨意嘗試不同的音訊檔案並探索頻率分析的迷人世界!
注意:該專案是開源的,可用於教育目的。頻率分析僅供實驗使用,可能不適合專業音頻調諧應用。
此項目檢查歌曲的頻率是否為 432Hz。
為什麼是 432Hz?
432Hz 被認為是宇宙的自然頻率,巴赫和貝多芬等偉大作曲家都採用 432Hz 來創作觸動靈魂的音樂。這表明通用音階使用 432A 來調音他們的樂器。然而,在第二次世界大戰期間,該頻率被更改為 440Hz,類似於收音機的靜電噪音,令人迷失方向且令人不安。相比之下,432Hz 則促進和諧和流動感。這是理想的頻率,一種感覺有機且令人振奮的頻率!大自然真是奇妙!
audio = AudioSegment.from_file(io.BytesIO(file_content)).set_channels(1) # Convert to mono samples = np.array(audio.get_array_of_samples()) sample_rate = audio.frame_rate
fft_vals = rfft(samples) fft_freqs = rfftfreq(len(samples), d=1/sample_rate) dominant_freq = fft_freqs[np.argmax(np.abs(fft_vals))]
以上是探索 Hz 的魔力:建構音樂頻率分析儀的詳細內容。更多資訊請關注PHP中文網其他相關文章!