Ejemplo n.º 1
0
def judge(mean_mag):
    low_exist = False  # 判斷是否存在電話按鍵聲的低頻
    high_exist = False  # 判斷是否存在電話按鍵聲的低頻
    fft = FFT(64, 3000, 34)
    magnitude = fft.magnitude()  # 取得頻率強度
    low_sum = sum(magnitude[13:22])  # 低頻區間的強度總和
    high_sum = sum(magnitude[23:32])  # 高頻區間的強度總和

    # 低頻與高頻平均強度是否大於環境頻率平均強度的1.4倍
    if (low_sum / 9 > mean_mag * 1.5) and (high_sum / 9 > mean_mag * 1.5):

        for i in range(9):
            # 收集低頻區間連續兩個的頻率強度
            low_conti = magnitude[13 + i] + magnitude[14 + i]
            # 收集高頻區間連續兩個的頻率強度
            high_conti = magnitude[23 + i] + magnitude[21 + i]

            # 連續強度是否佔低頻區間的 30 %以上
            if (low_conti > low_sum * 0.4):
                low_exist = True

            # 連續強度是否佔高頻區間的 30 %以上
            if (high_conti > high_sum * 0.4):
                high_exist = True

            #確認出現電話按鍵聲, 執行 which_num 函式
            if (low_exist == True) and (high_exist == True):
                occur = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  # 重置儲存次數陣列
                which_num(occur)
                break
Ejemplo n.º 2
0
    if (low_sum / 9 > mean_mag * 1.5) and (high_sum / 9 > mean_mag * 1.5):

        for i in range(9):
            # 收集低頻區間連續兩個的頻率強度
            low_conti = magnitude[13 + i] + magnitude[14 + i]
            # 收集高頻區間連續兩個的頻率強度
            high_conti = magnitude[23 + i] + magnitude[21 + i]

            # 連續強度是否佔低頻區間的 30 %以上
            if (low_conti > low_sum * 0.4):
                low_exist = True

            # 連續強度是否佔高頻區間的 30 %以上
            if (high_conti > high_sum * 0.4):
                high_exist = True

            #確認出現電話按鍵聲, 執行 which_num 函式
            if (low_exist == True) and (high_exist == True):
                occur = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  # 重置儲存次數陣列
                which_num(occur)
                break


fft = FFT(64, 3000, 34)
#將第 0 項、第 1 項頻率強度刪除
magnitude = fft.magnitude()[13:32]
#將該次 FFT 的平均強度加入 mean_mag
mean_mag = sum(magnitude) / len(magnitude)

while True:
    judge(mean_mag)
Ejemplo n.º 3
0
from flag_fft import FFT
import time

#while True:
fft = FFT(64, 4000, 34)  # 建立 FFT 物件
#peak = fft.major_peak() # 判斷主頻率
#print(peak)
for i in fft.magnitude():
    print(i)
time.sleep(0.1)  # 等候 0.1 秒