Spaces:
Running
Running
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"]) |