Spaces:
Paused
Paused
| import streamlit as st | |
| import numpy as np | |
| import soundfile as sf | |
| import io | |
| from AIvtuber import chat_session, tts_to_wav | |
| st.title("AI VTuber チャット(SBV2+Gemini)") | |
| # チャット履歴の初期化 | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # チャット入力 | |
| user_input = st.text_input("メッセージを入力してください:") | |
| if user_input: | |
| # GeminiでAI応答 | |
| resp = chat_session.send_message(user_input) | |
| st.session_state.messages.append({"role": "user", "content": user_input}) | |
| st.session_state.messages.append({"role": "bot", "content": resp.text}) | |
| # 音声合成 | |
| sr, wav = tts_to_wav(resp.text) | |
| buffer = io.BytesIO() | |
| sf.write(buffer, wav, sr, format='WAV') | |
| buffer.seek(0) | |
| st.audio(buffer, format="audio/wav") | |
| # チャット履歴の表示 | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.write(message["content"]) |