TaiwanFrog / app.py
yfyangd's picture
Update app.py
64c9fd5
raw history blame
No virus
4.31 kB
import numpy as np
import pandas as pd
from pandas.core.frame import DataFrame
import os
from tqdm import tqdm, tqdm_pandas
tqdm.pandas()
import librosa
import librosa.display
SAMPLE_RATE = 44100
import joblib
import IPython.display as ipd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
import cv2
import matplotlib.pyplot as plt
import joblib
import gradio as gr
from DataGenerator import Data_Generator, Audio
from FeatureExtraction import MFCC_spectrogram, FeatureExtraction
labels = ['American_bull','Brauer_treefrog','Brown_treefrog','Butler',
'Chinese_bull','Eiffinger','Emerald_treefrog','Farmland_treefrog',
'Fujian','Green_pond','Gunther','Harpist','Heymon','Japanese_Buerger',
'Latouchte','Long-legged','Malaysian_narrow_mouthed_toad','Mangrove',
'Meintein_treefrog','Moltrecht_treefrog','Olive','Orange_belly_treefrog',
'Ornate_rice','Ota_treefrog','Rice_field','Sauter','Spot_legged_treefrog',
'Stejneger','Swinhoe','Taipei_grass','Taipei_treefrog','Wang_treefrog']
dict_frog={'American_bull':'美洲牛蛙','Brauer_treefrog':'布氏樹蛙','Brown_treefrog':'褐樹蛙','Butler':'巴氏小雨蛙','Chinese_bull':'虎斑蛙','Eiffinger':'艾氏樹蛙','Emerald_treefrog':'碧眼樹蛙','Farmland_treefrog':'諸羅樹蛙','Fujian':'古氏赤蛙','Green_pond':'金線蛙','Gunther':'貢德氏赤蛙','Harpist':'豎琴蛙','Heymon':'黑蒙西氏小雨蛙','Japanese_Buerger':'日本樹蛙','Latouchte':'拉都希氏赤蛙','Long-legged':'長腳赤蛙','Malaysian_narrow_mouthed_toad':'亞洲錦蛙','Mangrove':'海蛙','Meintein_treefrog':'面天樹蛙','Moltrecht_treefrog':'莫氏樹蛙','Olive':'腹斑蛙','Orange_belly_treefrog':'橙腹樹蛙','Ornate_rice':'小雨蛙','Ota_treefrog':'太田樹蛙','Rice_field':'澤蛙','Sauter':'梭德氏赤蛙','Spot_legged_treefrog':'斑腿樹蛙','Stejneger':'長腳赤蛙','Swinhoe':'斯文豪氏赤蛙','Taipei_grass':'臺北赤蛙','Taipei_treefrog':'臺北樹蛙','Wang_treefrog':'王氏樹蛙'}
loaded_model = joblib.load('./RFC_model')
def flog(A):
test_scaled = FeatureExtraction(A)
result = loaded_model.predict(test_scaled)
img=cv2.imread('./'+labels[result[0]]+'.jpg')
img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
return dict_frog[labels[result[0]]],img
output_label = gr.Label()
output_image = gr.Image()
title="台灣青蛙聲音辨識"
description='''
在新北市三峽北114和115線往滿月圓森林遊樂區的路上,可能有用路人看過「當心青蛙」的號誌,但是應該很少人知道路中央可是經常遍佈命喪輪下的青蛙。
5-8月是褐樹蛙的繁殖期,牠們必須從森林穿越馬路來到溪邊繁殖,路殺機率因而大增,志工在晚間沿路撿拾路中央的青蛙放到路邊,以及把屍體移走,志工表示,最高兩人一晚曾撿到90幾隻屍體,他們最不忍心的不只是看到青蛙遭輾斃,還有看到受重傷的青蛙,就算移到路邊,這些青蛙也無法在野外存活太久。
兩棲類是重要的環境指標,因此調查與監測兩棲類的族群變化,已成為生物多樣性保育的重要工作之一。然而若僅倚賴科學家進行調查,常會受限時間、經費、人力的因素。目前東華大學生態與環境調查研究所楊懿如教授所率領的兩棲類調查團隊, 全台灣共有31組志工團隊. 共調查32種青蛙的分佈. 志工必須要輪流排班, 深入池塘或是森林中進行現場調查。 大部分的青蛙藏匿在沼澤或是樹林中, 無法依靠目視判斷,主要由志工聆聽其叫聲來調查青蛙品種分佈。
本網站藉由機器學習,開發出青蛙聲音自動辨識.以幫助生物學家研究青蛙生態學。志工可以更快展開生態調查, 建立資料庫以了解環境變化。
<th>
<iframe width="560" height="315" src="https://www.youtube.com/embed/oGqB8ToAOGs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</th>
### 請按下 "Record from microphone" 收音
'''
gr.Interface(flog,
inputs=[
gr.inputs.Audio(source="microphone", type="filepath"),
],
outputs=[output_label,output_image],title=title,description=description).launch()