SlideShare a Scribd company logo
1 of 129
Download to read offline
Streamlitを用いた音響信号処理ダッシュボードStreamlitを用いた音響信号処理ダッシュボード
の開発(Tokyo BISH Bash #03発表資料)の開発(Tokyo BISH Bash #03発表資料)
自己紹介およびPyData Osakaの紹介自己紹介およびPyData Osakaの紹介
別スライドで説明します
本日の概要本日の概要
Streamlitの紹介
実例を踏まえた使用方法の紹介
Herokuへのデプロイ方法の紹介
その他
本日の資料本日の資料
https://www.hiromasa.info/posts/22/ (https://www.hiromasa.info/posts/22/)
StreamlitとはStreamlitとは
Webブラウザで動作するダッシュボードを作成するためのライブラリ
複数のコンポーネントが連携して動作するもの
Pythonのみで記述が可能
plotly/dashと比較されることが多い
どんな場面で必要かどんな場面で必要か
実装したアルゴリズムを他者に試してもらいたい
Webフロントエンドがあると便利
パラメータ変更による試行錯誤が必要な場面
調整ツールとして使用
実例実例
今回作成したダッシュボードを簡単に紹介
GitHub Star HistoryGitHub Star History
https://star-history.t9t.io/#streamlit/streamlit&plotly/dash (https://star-
history.t9t.io/#streamlit/streamlit&plotly/dash)
Dashとの違いDashとの違い
Dash
プロダクション/エンタープライズ環境での実行に主眼
Streamlit
ラピッドプロトタイピングに主眼
Towards Data Scienceの記事 (https://towardsdatascience.com/plotly-dash-vs-
streamlit-which-is-the-best-library-for-building-data-dashboard-web-apps-
97d7c98b938c)
Rのshinyも含めて比較
plotly.comの比較記事 (https://plotly.com/comparing-dash-shiny-streamlit/)
Streamlitの魅力Streamlitの魅力
手軽にフロントエンドが構築可能
javascript不要、スクリプトライクな記述
各種pythonライブラリにGUIを付与
豊富な描画ライブラリ
matplotlib, plotly, altair, ...
Dashはplotlyを前提
Streamlitの情報Streamlitの情報
公式ドキュメント (https://docs.streamlit.io/en/stable/index.html)
コミュニティフォーラム (https://discuss.streamlit.io/)
本発表におけるバージョン本発表におけるバージョン
0.68.0
1月あたり1〜2回マイナーバージョンが更新
まだ不安定
0.66.0も一部で使用
10/8にリリースされたばかり
(https://docs.streamlit.io/en/stable/changelog.html)
基本機能の紹介基本機能の紹介
導入方法導入方法
pip install streamlit
実行方法実行方法
In [45]: %%writefile app.py
import streamlit as st
st.write("# Hello, Streamlit!")
In [3]: !streamlit run app.py
Overwriting app.py
You can now view your Streamlit app in your browser.
Network URL: http://172.17.0.2:8501
External URL: http://49.251.189.62:8501
^C
Stopping...
ノートブックが固まるため以降はターミナル上からstreamlitコマンドを実行
アプリ更新時の反映が容易アプリ更新時の反映が容易
ファイルの上書きを検知しRerunボタンを自動表示
In [38]: %%writefile app.py
import streamlit as st
st.write("# Hello, Streamlit!")
st.write("# Where is Rerun button?")
Overwriting app.py
スクリプトエラーもブラウザ上に表示スクリプトエラーもブラウザ上に表示
デバッグも容易
In [5]: %%writefile app.py
import streamlit as st
st.write("# Hello, Streamlit!")
raise ValueError
Overwriting app.py
st.write
引数に与えたオブジェクトを画面に表示
markdownはHTMLに変換して表示
listやdictは階層表示
ndarrayやpandasのDataFrameはテーブルとして表示
In [6]: %%writefile app.py
import numpy as np
import pandas as pd
import streamlit as st
st.write([1, 2, 3])
st.write({"hello": "world!"})
st.write(np.arange(10).reshape(1,10))
st.write(pd.DataFrame(np.random.randn(10, 4), columns=["1", "2", "3", "4"]))
Overwriting app.py
本日紹介するダッシュボード本日紹介するダッシュボード
窓関数ビューワ
デジタルフィルタデザイナ
pyroomacousticsを用いたシミュレータ
espnet2のフロントエンド
https://github.com/wrist/streamlit-dsp (https://github.com/wrist/streamlit-dsp)
ブランチブランチ
master
heroku
Herokuへのアップロードに必要なファイルを格納
espnet2
3.6.x系で動作させるため別ブランチ
Steramlitのバージョンは0.66.0
github上のstreamlitアプリgithub上のstreamlitアプリ
一般的には直接実行可能
streamlit run https://github.com/user/repos.git/master/app.py
今回のアプリはimportの都合でエラーが生じる
窓関数ビューワの構築窓関数ビューワの構築
scipy.signalを使用
Streamlitによるアプリ構築をライブコーディング的に実施
現状のダッシュボード
window_viwer.py (https://github.com/wrist/streamlit-
dsp/blob/master/streamlit_dsp/window_viewer.py)
窓関数の選択インタフェース窓関数の選択インタフェース
サイドバーにselectboxで表示
サイドバー上への配置
st.sidebar.xxx
st.xxxと本体に配置できるウィジェットは何でも配置可能
st.selectbox
st.selectbox(ラベル名, 選択肢のリスト, デフォルト項目のインデックス)
In [46]: %%writefile app.py
import streamlit as st
windows = ["boxcar", "triang", "blackman", "hamming", "hann", "bartlett", "flattop",
"parzen", "bohman", "blackmanharris", "nuttall", "barthann"]
Overwriting app.py
%%writefile -a app.pyでapp.pyに追記
In [47]: %%writefile -a app.py
win_name = st.sidebar.selectbox("window", windows, 4)
st.write(win_name)
Appending to app.py
この時点の見た目
窓関数の窓長およびFFT長の取得窓関数の窓長およびFFT長の取得
同様にst.selectboxで2の累乗の値を取得
In [48]: %%writefile -a app.py
two_powers = [2**i for i in range(16)]
Nx = st.sidebar.selectbox("Window Length", two_powers, 8)
nfft = st.sidebar.selectbox("FFT Length", two_powers, 10)
st.write(win_name, Nx, nfft)
Appending to app.py
この時点での見た目
窓関数の取得および描画窓関数の取得および描画
窓関数の取得
scipy.signal.get_window
scipy.fft.fftで周波数分析
描画
matplotlibをひとまず使用
必要なライブラリをimport
In [49]: %%writefile -a app.py
import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as sg
import scipy.fft as fft
Appending to app.py
窓関数を取得し周波数特性を計算
In [50]: %%writefile -a app.py
eps = 1.e-12
win = sg.get_window(win_name, Nx)
W = 20.0 * np.log10(np.abs(fft.fft(win, nfft)) + eps)
W = fft.fftshift(W)
Appending to app.py
matplotlibを用いて描画
In [51]: %%writefile -a app.py
fig, axes = plt.subplots(2, 1)
axes[0].plot(win)
axes[1].plot(W)
st.pyplot(fig)
Appending to app.py
st.pyplot
matplotlibの gureを描画
st.pyplot(fig)
使い慣れたmatplotlibを使える
が、javascriptの恩恵が得られない
この時点での見た目
streamlitの描画ライブラリの描画ライブラリ
st.line_chart, st.area_chart, st.bar_chart
st.altair_chartのsyntax sugar
手軽に使える反面細かい設定は不可能
その他vega, plotly, bokehなども使用可能
In [52]: %%writefile -a app.py
st.line_chart(win)
st.line_chart(W)
Appending to app.py
st.line_chartの見た目
この時点でのファイルの内容この時点でのファイルの内容
通常の実行スクリプトに近い
手軽にフロントエンドの作成が可能
In [14]: !cat app.py | pygmentize
import streamlit as st
windows = ["boxcar", "triang", "blackman", "hamming", "hann", "bartlett", "flattop",
"parzen", "bohman", "blackmanharris", "nuttall", "barthann"]
win_name = st.sidebar.selectbox("window", windows, 4)
st.write(win_name)
two_powers = [2**i for i in range(16)]
Nx = st.sidebar.selectbox("Window Length", two_powers, 8)
nfft = st.sidebar.selectbox("FFT Length", two_powers, 10)
st.write(win_name, Nx, nfft)
import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as sg
import scipy.fft as fft
eps = 1.e-12
win = sg.get_window(win_name, Nx)
W = 20.0 * np.log10(np.abs(fft.fft(win, nfft)) + eps)
W = fft.fftshift(W)
fig, axes = plt.subplots(2, 1)
axes[0].plot(win)
axes[1].plot(W)
st.pyplot(fig)
st.line_chart(win)
st.line_chart(W)
複数の窓関数を同時に描画したい複数の窓関数を同時に描画したい
st.multiselect(ラベル名, 選択肢のリスト, デフォルト項目の要素のリスト)
複数の選択項目をリストで返す
第三引数は選択肢中に存在する要素のリスト
先程と同じ
In [15]: %%writefile app.py
import streamlit as st
windows = ["boxcar", "triang", "blackman", "hamming", "hann", "bartlett", "flattop",
"parzen", "bohman", "blackmanharris", "nuttall", "barthann"]
Overwriting app.py
先程と同じ
In [16]: %%writefile -a app.py
import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as sg
import scipy.fft as fft
Appending to app.py
st.multiselectを使用
In [17]: %%writefile -a app.py
# ここから先が異なる
win_names = st.sidebar.multiselect("window", windows, [windows[4]])
st.write(win_names)
Appending to app.py
win_namesをst.writeする以外は同じ
In [18]: %%writefile -a app.py
two_powers = [2**i for i in range(16)]
Nx = st.sidebar.selectbox("Window Length", two_powers, 8)
nfft = st.sidebar.selectbox("FFT Length", two_powers, 10)
st.write(win_names, Nx, nfft)
Appending to app.py
win_namesをループで処理
In [19]: %%writefile -a app.py
eps = 1.e-12
for win_name in win_names: # ループとして処理
win = sg.get_window(win_name, Nx)
W = 20.0 * np.log10(np.abs(fft.fft(win, nfft)) + eps)
W = fft.fftshift(W)
Appending to app.py
In [20]: %%writefile -a app.py
# ループの続き
st.write(win_name)
st.line_chart(win)
st.line_chart(W)
Appending to app.py
複数の窓が繰り返し描画される
複数の窓をまとめて描画したい複数の窓をまとめて描画したい
pandasのDataFrameの複数カラムにデータを押し込む
st.line_chartに渡す
先程と同じ
In [22]: %%writefile app.py
import streamlit as st
windows = ["boxcar", "triang", "blackman", "hamming", "hann", "bartlett", "flattop",
"parzen", "bohman", "blackmanharris", "nuttall", "barthann"]
Overwriting app.py
pandasを追加
In [23]: %%writefile -a app.py
import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as sg
import scipy.fft as fft
import pandas as pd # 追加
Appending to app.py
先程と同じ
In [24]: %%writefile -a app.py
win_names = st.sidebar.multiselect("window", windows, [windows[4]])
st.write(win_names)
Appending to app.py
先程と同じ
In [25]: %%writefile -a app.py
two_powers = [2**i for i in range(16)]
Nx = st.sidebar.selectbox("Window Length", two_powers, 8)
nfft = st.sidebar.selectbox("FFT Length", two_powers, 10)
st.write(win_names, Nx, nfft)
Appending to app.py
窓と周波数特性をlistに格納
In [26]: %%writefile -a app.py
eps = 1.e-12
win_ary = []; W_ary = []
for win_name in win_names: # ループとして処理
win = sg.get_window(win_name, Nx)
W = 20.0 * np.log10(np.abs(fft.fft(win, nfft)) + eps)
W = fft.fftshift(W)
win_ary.append(win)
W_ary.append(W)
Appending to app.py
DataFrameに格納
In [27]: %%writefile -a app.py
fs = 16000.0
t = np.arange(Nx)
f = (fs / nfft) * np.arange(-nfft/2, nfft/2)
df_win = pd.DataFrame(np.array(win_ary).T, index=t, columns=win_names)
df_W = pd.DataFrame(np.array(W_ary).T, index=f, columns=win_names)
Appending to app.py
In [28]: %%writefile -a app.py
st.line_chart(df_win)
st.line_chart(df_W)
Appending to app.py
窓関数ビューワのまとめ窓関数ビューワのまとめ
st.selectbox, st.multiselectを紹介
st.pyplot, st.line_chartの使い方を紹介
デジタルフィルタデザイナーデジタルフィルタデザイナー
scipy.signalのデジタルフィルタ設計関数を用いたダッシュボードを作成
設計したフィルタをアップロードした音声に適用しブラウザ上で視聴
処理後の音声のダウンロードリンクを生成
現状のダッシュボード現状のダッシュボード
scipy.signal.firwinのみ対応
lter_designer.py (https://github.com/wrist/streamlit-
dsp/blob/master/streamlit_dsp/ lter_designer.py)
紹介する項目紹介する項目
数値入力
st.number_input
チェックボックス
st.checkbox
オーディオファイルのアップロード/ダウンロード
st.file_uploader
ダウンロードリンクは自力で作成
オーディオファイルのブラウザ上での再生
st.audio
数値入力数値入力
サンプリングレート、タップ長、カットオフ周波数の入力
st.number_input(ラベル名, min_value, max_value, value)
valueなどの型はintから oatで統一する必要有
In [29]: %%writefile app.py
import streamlit as st
fs = st.sidebar.number_input("Sampling Frequency", min_value=1,
max_value=192000, value=16000)
cutoff_hz = st.sidebar.number_input("cutoff [Hz]", min_value=0.0,
max_value=fs/2.0, value=100.0)
Overwriting app.py
チェックボックスチェックボックス
st.checkbox(ラベル名, デフォルト真偽値)
チェックが入った場合のみ実行させる動作を記述可能
In [30]: %%writefile -a app.py
show_time_coeff = st.checkbox("time coefficient", value=True)
if show_time_coeff:
pass # do something
Appending to app.py
オーディオファイルのアップロードオーディオファイルのアップロード
st.file_uploader(ラベル名, type)
typeは拡張子、リストも可能
返り値はBytesIOのサブクラス(UploadedFile)
le-like objectなのでファイルを要求する関数に渡せる
In [31]: %%writefile -a app.py
import soundfile as sf
wav_file = st.sidebar.file_uploader("input wave file", type="wav")
if wav_file is not None:
sig, wav_fs = sf.read(wav_file) # file-likeなので渡せる
st.line_chart(sig)
Appending to app.py
ファイルブラウズかドラッグアンドドロップでアップロード可能
オーディオファイルのブラウザ上での再生オーディオファイルのブラウザ上での再生
st.audio(data)
dataはファイル名、BytesIO、ndarrayなど
rawデータやndarrayの場合はファイルヘッダーが必要
In [32]: %%writefile -a app.py
if wav_file is not None:
st.audio(wav_file)
chromeでの見た目
Appending to app.py
オーディオファイルの一括アップロードオーディオファイルの一括アップロード
st.file_uploader(ラベル名, type, encoding=None,
accept_multiple_files=True)
最新版の0.68.0で導入
返り値がリストになるため音声データのバッチ処理が可能
リロード時にうまく読み込めないバグがある?
In [33]: %%writefile -a app.py
wav_files = st.sidebar.file_uploader("input wave files", encoding=None,
type="wav", accept_multiple_files=True)
if wav_files is not None:
for wav_fname in wav_files:
sig, wav_fs = sf.read(wav_fname)
st.line_chart(sig)
Appending to app.py
オーディオファイルのダウンロードオーディオファイルのダウンロード
公式コンポーネントはまだない
が存在
バイナリファイルをbase64エンコード
aタグを生成しst.markdownで表示
workaround (https://discuss.streamlit.io/t/how-to-download- le-in-
streamlit/1806/26)
ダウンロードリンクを作成するための関数
In [34]: %%writefile -a app.py
import os
import base64
def get_binary_file_downloader_html(bin_file, file_label='File', extension=""):
with open(bin_file, 'rb') as f:
data = f.read()
bin_str = base64.b64encode(data).decode()
href = f'<a href="data:application/octet-stream;base64,{bin_str}" download="{os.path.basename(
bin_file)}{extension}">Download {file_label}</a>'
return href
Appending to app.py
入力ファイルを0.5倍した波形を一時ファイルに保存の上でダウンロードリンクを
作成
In [35]: %%writefile -a app.py
import tempfile
if wav_file is not None:
sig, wav_fs = sf.read(wav_file)
hsig = 0.5 * sig
# 名前付き一時ファイルに保存
fp = tempfile.NamedTemporaryFile()
sf.write(fp.name, hsig, wav_fs, format="wav")
st.audio(fp.name)
# ダウンロードリンクを表示
href = get_binary_file_downloader_html(fp.name, "filtered wave file", ".wav")
st.markdown(href, unsafe_allow_html=True)
Appending to app.py
フィルタデザイナーのまとめフィルタデザイナーのまとめ
数値入力とチェックボックスコンポーネントを紹介
オーディオファイルのアップロード、再生、ダウンロード方法
pyroomacousticsを用いたシミュレータを用いたシミュレータ
pyroomacousticsのroomオブジェクト、音源、マイクをGUIで配置
RIR生成または伝搬シミュレーションを実行
※Streamlitのバージョン0.68.0ではシミュレーションでエラーが発生
現状のダッシュボード現状のダッシュボード
Shoeboxのみ対応
room_designer.py (https://github.com/wrist/streamlit-
dsp/blob/master/streamlit_dsp/room_designer.py)
紹介する内容紹介する内容
スライダー
st.slider
ボタン
st.button
スライダースライダー
st.slider(ラベル名, min_value, max_value, value)
valueの類は省略可能
rx = st.sidebar.slider("x", min_value=0.0, max_value=100.0)
ボタンボタン
st.button(ラベル名)
ret = st.button("Simulate")
if ret:
pass
アプリケーションのタブ化アプリケーションのタブ化
現在タブ用コンポーネントはない
st.radioで代用可能
ただしダッシュボードを切り替えると状態がリセットされる
st.radioをタブ代わりに使用をタブ代わりに使用
app.py (https://github.com/wrist/streamlit-dsp/blob/master/streamlit_dsp/app.py)
ret = st.sidebar.radio("app", ["window viewer", "filter designer", "room designer"])
print(ret)
if ret == "window viewer":
window_viewer.main()
elif ret == "filter designer":
filter_designer.main()
elif ret == "room designer":
room_designer.main()
espnet2のフロントエンドespnet2のフロントエンド
espnet2
pythonのみで処理可能
pre-trainedモデルをダウンロードする仕組みが存在
https://github.com/espnet/espnet_model_zoo
(https://github.com/espnet/espnet_model_zoo)
ダッシュボード
asrのみ対応
espnet2_loader.py (https://github.com/wrist/streamlit-
dsp/blob/espnet2/streamlit_dsp/espnet2_loader.py)
モデルのダウンロードモデルのダウンロード
table.csv記載のnameを打ち込むとモデルをダウンロード
問題点:標準出力がキャプチャできないためダウンロード進捗が不明
音声ファイルをアップロードすると波形を描画音声ファイルをアップロードすると波形を描画
デコードボタンクリックで音声認識を実行デコードボタンクリックで音声認識を実行
モデルの情報を表示モデルの情報を表示
HerokuへのデプロイHerokuへのデプロイ
実行環境として手軽に利用可能
git push heroku local_branch:main
実際に稼働中
free-dynoなので遅い
https://streamlit-dsp.herokuapp.com (https://streamlit-
dsp.herokuapp.com)
必要となるファイル必要となるファイル
Procfile
Aptfile
requirements.txt
runtime.txt
Procfile
実行時のコマンドを記述
内容: web: streamlit run --server.enableCORS false --server.port $PORT
streamlit_dsp/app.py
runtime.txt
ランタイムバージョンを指定する場合に必要
内容: Python 3.8.6
使用可能なランタイム (https://devcenter.heroku.com/articles/python-
support#supported-runtimes)
Aptfile
apt installする対象を記述
soundfileライブラリがlibsndfileに依存
buildpackが必要
heroku buildpacks:add heroku-community/apt
内容: libsndfile-dev
requirements.txt
依存ライブラリを記述
HerokuはPoetryに対応していない
pyproject.tomlからpush時に動的にrequirements.txtを生成
しかしエラー時に対処できないのでローカルで予め生成してお
く
poetry export -f requirements.txt --output requirements.txt
python-poetry-buildpack (https://github.com/moneymeets/python-poetry-
buildpack)
最終的な実行コマンド最終的な実行コマンド
必要なファイルが揃った上で下記を実行
$ heroku buildpacks:clear
$ heroku buildpacks:add heroku-community/apt
$ heroku buildpacks:add heroku/python
$ heroku create
$ git push heroku heroku:main
$ heroku open
その他の話題その他の話題
ASTの書き換えによるコード生成ASTの書き換えによるコード生成
ほぼスクリプトライクに書けるため代入の上書きにより通常のスクリプトとして
実行できるようにすることも可能
標準ライブラリastでコードを書き換えastorライブラリでコードを生成
そのまま実行できるものが出来上がるわけではないが取っ掛かりに便利
st.cacheによるキャッシュ機構によるキャッシュ機構
時間のかかる計算や大きなモデルのダウンロードに対してキャッシュ動作を実現
キャッシュ機能を付与したい関数に@st.cacheというデコレータを付与
引数、返り値、本体内部の変化を監視
ドキュメント (https://docs.streamlit.io/en/stable/caching.html)
まだ足りないと感じる要素(1)まだ足りないと感じる要素(1)
タブ
デフォルトの可視化コンポーネント
軸ラベルぐらい指定したい
複雑なレイアウト
ベータ機能としてコンテナなどが追加
(https://docs.streamlit.io/en/stable/api.html#lay-out-your-app)
まだ足りないと感じる要素(2)まだ足りないと感じる要素(2)
編集可能なテーブル
フィルタ係数を入力して可視化することなどが困難
ユーザー認証および状態の永続化
SessionState.pyを使う例
https://discuss.streamlit.io/t/alternative-implementation-of-session-
state/799 (https://discuss.streamlit.io/t/alternative-implementation-of-
session-state/799)
また足りないと感じる要素(3)また足りないと感じる要素(3)
標準出力のキャプチャ
処理進捗を標準出力に出すコマンドで困る
contextlibでredirectは可能だが、非同期実行ができない
仕様の安定性
複数ファイルアップローダにおいて再読み込み時にエラーが発生
https://github.com/streamlit/streamlit/issues/268
(https://github.com/streamlit/streamlit/issues/268)
コンポーネントの自作コンポーネントの自作
必要なコンポーネントは自作することが可能とのこと
https://docs.streamlit.io/en/stable/publish_streamlit_components.html
(https://docs.streamlit.io/en/stable/publish_streamlit_components.html)
まとめまとめ
自作のダッシュボードを通じてStreamlitについて紹介
デプロイ方法およびその他の話題を紹介
https://www.hiromasa.info/posts/22/ (https://www.hiromasa.info/posts/22/)

More Related Content

What's hot

テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】MOCKS | Yuta Morishige
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
2019年度チュートリアルBPE
2019年度チュートリアルBPE2019年度チュートリアルBPE
2019年度チュートリアルBPE広樹 本間
 
統計的係り受け解析入門
統計的係り受け解析入門統計的係り受け解析入門
統計的係り受け解析入門Yuya Unno
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised LearningまとめDeep Learning JP
 
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"Deep Learning JP
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜Megagon Labs
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPTnlab_utokyo
 
統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-Shiga University, RIKEN
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピTakahiro Kubo
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜諒介 荒木
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究についてMasahiro Suzuki
 
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向Koichiro Mori
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)Takayuki Itoh
 
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由Yoshitaka Ushiku
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 

What's hot (20)

テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
2019年度チュートリアルBPE
2019年度チュートリアルBPE2019年度チュートリアルBPE
2019年度チュートリアルBPE
 
統計的係り受け解析入門
統計的係り受け解析入門統計的係り受け解析入門
統計的係り受け解析入門
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
 
統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
 
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
 
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 

Similar to Streamlitを用いた音響信号処理ダッシュボードの開発

Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmerSho Shimauchi
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2Takao Tetsuro
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレregret raym
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてKazuki Ohta
 
About rails 3
About rails 3About rails 3
About rails 3issei126
 
Cactiでのcliツールについて
CactiでのcliツールについてCactiでのcliツールについて
CactiでのcliツールについてAkio Shimizu
 
Railsやるやる_セキュリティ小話
Railsやるやる_セキュリティ小話Railsやるやる_セキュリティ小話
Railsやるやる_セキュリティ小話Naoki Ishibashi
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talkmitamex4u
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったCHY72
 
20110824 gatracker-final
20110824 gatracker-final20110824 gatracker-final
20110824 gatracker-finalsusumukatachi
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテストTomonori Yamada
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話ShunyoKawamoto
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 

Similar to Streamlitを用いた音響信号処理ダッシュボードの開発 (20)

Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmer
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 
Canvas勉強会
Canvas勉強会Canvas勉強会
Canvas勉強会
 
What's Sketch.app
What's Sketch.appWhat's Sketch.app
What's Sketch.app
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン Hadoopについて
 
About rails 3
About rails 3About rails 3
About rails 3
 
Cactiでのcliツールについて
CactiでのcliツールについてCactiでのcliツールについて
Cactiでのcliツールについて
 
Railsやるやる_セキュリティ小話
Railsやるやる_セキュリティ小話Railsやるやる_セキュリティ小話
Railsやるやる_セキュリティ小話
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
20110824 gatracker-final
20110824 gatracker-final20110824 gatracker-final
20110824 gatracker-final
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 

More from Hiromasa Ohashi

「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達Hiromasa Ohashi
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-Hiromasa Ohashi
 
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料Hiromasa Ohashi
 
PRML読書会#4資料+補足
PRML読書会#4資料+補足PRML読書会#4資料+補足
PRML読書会#4資料+補足Hiromasa Ohashi
 
PRML読書会#2,#3資料
PRML読書会#2,#3資料PRML読書会#2,#3資料
PRML読書会#2,#3資料Hiromasa Ohashi
 
大阪PRML読書会#1資料
大阪PRML読書会#1資料大阪PRML読書会#1資料
大阪PRML読書会#1資料Hiromasa Ohashi
 

More from Hiromasa Ohashi (6)

「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
 
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料
 
PRML読書会#4資料+補足
PRML読書会#4資料+補足PRML読書会#4資料+補足
PRML読書会#4資料+補足
 
PRML読書会#2,#3資料
PRML読書会#2,#3資料PRML読書会#2,#3資料
PRML読書会#2,#3資料
 
大阪PRML読書会#1資料
大阪PRML読書会#1資料大阪PRML読書会#1資料
大阪PRML読書会#1資料
 

Streamlitを用いた音響信号処理ダッシュボードの開発