我希望使用麥克風找到房間中的當前分貝級別并將其設定為變數。我一直無法在這方面找到任何 python 代碼,所以我很困惑。
如果變數可以每 0.3 秒重繪 一次,那會很好,但它不是必須的。
謝謝你的幫助!!
uj5u.com熱心網友回復:
這是一些使用 的 python 代碼pyaudio library,可以使用均方根 (RMS)計算 dB 級別并每 0.3 秒列印一次。無論是rms與db可作為變數。
import pyaudio
import time
from math import log10
import audioop
p = pyaudio.PyAudio()
WIDTH = 2
RATE = int(p.get_default_input_device_info()['defaultSampleRate'])
DEVICE = p.get_default_input_device_info()['index']
rms = 0
print(p.get_default_input_device_info())
def callback(in_data, frame_count, time_info, status):
global rms
rms = audioop.rms(in_data, WIDTH) / 32767
return in_data, pyaudio.paContinue
stream = p.open(format=p.get_format_from_width(WIDTH),
input_device_index=DEVICE,
channels=1,
rate=RATE,
input=True,
output=False,
stream_callback=callback)
stream.start_stream()
while stream.is_active():
db = 20 * log10(rms)
print(f"RMS: {rms} DB: {db}")
# refresh every 0.3 seconds
time.sleep(0.3)
stream.stop_stream()
stream.close()
p.terminate()
筆記
正如上面的評論中提到的 - 測量 dB 可能是一個比您在這里需要的更深入的主題。如果沒有關于用例的一些資訊,請注意,盡管這里的方法是您可能會看到的最常見的方法 - 它只將峰值與自身進行比較。這個問題對此有很大的討論。
如果您需要真實世界的分貝測量,您將需要參考測量、校準設備和更多研究!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/399629.html
