Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -493,8 +493,8 @@ def score_places(emo_label, top_k=4, diversity=True):
|
|
| 493 |
def plot_emotion_map(emotion_label, scores, method="AI"):
|
| 494 |
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5), dpi=150)
|
| 495 |
emotion_jp = {
|
| 496 |
-
'happiness': '
|
| 497 |
-
'joy': '
|
| 498 |
}
|
| 499 |
color_map = {
|
| 500 |
'happiness': '#FF6B6B','anger': '#FFA94D','sadness': '#868E96','neutral': '#51CF66',
|
|
@@ -602,10 +602,10 @@ def main():
|
|
| 602 |
if key not in st.session_state: st.session_state[key] = default
|
| 603 |
|
| 604 |
st.subheader("1) 録音またはアップロード")
|
| 605 |
-
with st.warning("
|
| 606 |
-
st.markdown("
|
| 607 |
|
| 608 |
-
tab_rec, tab_upload = st.tabs(["
|
| 609 |
|
| 610 |
with tab_rec:
|
| 611 |
audio = audiorecorder("録音開始 ▶", "録音停止 ■", key=f"rec_{st.session_state['rec_key']}")
|
|
@@ -627,12 +627,12 @@ def main():
|
|
| 627 |
try:
|
| 628 |
bytes_data = uploaded_file.getvalue()
|
| 629 |
st.session_state["wav_bytes"] = bytes_data
|
| 630 |
-
st.success(f"
|
| 631 |
st.caption(f"ファイルサイズ: {len(bytes_data) / 1024:.1f} KB")
|
| 632 |
audio_player_bytes(bytes_data, mime="audio/wav")
|
| 633 |
except Exception as e:
|
| 634 |
-
st.error("
|
| 635 |
-
st.info("
|
| 636 |
|
| 637 |
st.subheader("2) 同意")
|
| 638 |
consent = st.radio("研究利用の同意(匿名IDで特徴量と評価を保存します)",
|
|
@@ -661,14 +661,14 @@ def main():
|
|
| 661 |
method = st.session_state["method"]
|
| 662 |
recs = st.session_state["recs"]
|
| 663 |
emotion_japanese = {
|
| 664 |
-
'happiness': '
|
| 665 |
'joy': '喜び', 'calm': '落ち着き', 'surprise': '驚き', 'release': '発散'
|
| 666 |
}
|
| 667 |
display_emotion = emotion_japanese.get(emotion_label, emotion_label)
|
| 668 |
st.success(f"推定感情: **{display_emotion}**")
|
| 669 |
|
| 670 |
explanations = {
|
| 671 |
-
"happiness": "
|
| 672 |
"joy": "喜びや楽しさを感じています",
|
| 673 |
"calm": "落ち着いて穏やかな状態です",
|
| 674 |
"surprise": "驚きや興奮を感じています",
|
|
@@ -709,7 +709,7 @@ def main():
|
|
| 709 |
share_html = create_share_buttons(display_emotion, choice_name)
|
| 710 |
st.markdown(share_html, unsafe_allow_html=True)
|
| 711 |
|
| 712 |
-
if st.button("
|
| 713 |
consent_research = (consent == "匿名で保存する")
|
| 714 |
if not consent_research: st.info("体験のみモードです。研究ログは保存しません。")
|
| 715 |
else: st.success("保存機能は開発中です。")
|
|
|
|
| 493 |
def plot_emotion_map(emotion_label, scores, method="AI"):
|
| 494 |
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5), dpi=150)
|
| 495 |
emotion_jp = {
|
| 496 |
+
'happiness': '幸せ', 'anger': '怒り', 'sadness': '悲しみ', 'neutral': '中立',
|
| 497 |
+
'joy': '喜び', 'calm': '落ち着き', 'surprise': '驚き', 'release': '発散'
|
| 498 |
}
|
| 499 |
color_map = {
|
| 500 |
'happiness': '#FF6B6B','anger': '#FFA94D','sadness': '#868E96','neutral': '#51CF66',
|
|
|
|
| 602 |
if key not in st.session_state: st.session_state[key] = default
|
| 603 |
|
| 604 |
st.subheader("1) 録音またはアップロード")
|
| 605 |
+
with st.warning("アップロードで403が出る場合は、録音機能をご利用ください。"):
|
| 606 |
+
st.markdown("**録音** → 直接話す or 端末で音声再生しながら録音")
|
| 607 |
|
| 608 |
+
tab_rec, tab_upload = st.tabs(["録音する(推奨)", "ファイルを使う"])
|
| 609 |
|
| 610 |
with tab_rec:
|
| 611 |
audio = audiorecorder("録音開始 ▶", "録音停止 ■", key=f"rec_{st.session_state['rec_key']}")
|
|
|
|
| 627 |
try:
|
| 628 |
bytes_data = uploaded_file.getvalue()
|
| 629 |
st.session_state["wav_bytes"] = bytes_data
|
| 630 |
+
st.success(f"読み込み成功: {uploaded_file.name}")
|
| 631 |
st.caption(f"ファイルサイズ: {len(bytes_data) / 1024:.1f} KB")
|
| 632 |
audio_player_bytes(bytes_data, mime="audio/wav")
|
| 633 |
except Exception as e:
|
| 634 |
+
st.error("ファイル読み込みエラー"); st.exception(e)
|
| 635 |
+
st.info("代わりに録音機能をお試しください。")
|
| 636 |
|
| 637 |
st.subheader("2) 同意")
|
| 638 |
consent = st.radio("研究利用の同意(匿名IDで特徴量と評価を保存します)",
|
|
|
|
| 661 |
method = st.session_state["method"]
|
| 662 |
recs = st.session_state["recs"]
|
| 663 |
emotion_japanese = {
|
| 664 |
+
'happiness': '幸せ', 'anger': '怒り', 'sadness': '悲しみ', 'neutral': '中立',
|
| 665 |
'joy': '喜び', 'calm': '落ち着き', 'surprise': '驚き', 'release': '発散'
|
| 666 |
}
|
| 667 |
display_emotion = emotion_japanese.get(emotion_label, emotion_label)
|
| 668 |
st.success(f"推定感情: **{display_emotion}**")
|
| 669 |
|
| 670 |
explanations = {
|
| 671 |
+
"happiness": "幸せを感じています",
|
| 672 |
"joy": "喜びや楽しさを感じています",
|
| 673 |
"calm": "落ち着いて穏やかな状態です",
|
| 674 |
"surprise": "驚きや興奮を感じています",
|
|
|
|
| 709 |
share_html = create_share_buttons(display_emotion, choice_name)
|
| 710 |
st.markdown(share_html, unsafe_allow_html=True)
|
| 711 |
|
| 712 |
+
if st.button("ログ保存", key="save_log"):
|
| 713 |
consent_research = (consent == "匿名で保存する")
|
| 714 |
if not consent_research: st.info("体験のみモードです。研究ログは保存しません。")
|
| 715 |
else: st.success("保存機能は開発中です。")
|