Streamlit multimodal chat input component with text, image, and voice support
Project description
Demo
Streamlit Multimodal Chat Input
A multimodal chat input component for Streamlit that supports text input, image upload, and voice input.
Note: Voice and image features require HTTPS or localhost environment to function properly.
Features
- 📝 Text Input: Same usability as st.chat_input
- 🖼️ Image File Upload: Supports jpg, png, gif, webp
- 🎤 Voice Input: Web Speech API / OpenAI Whisper API support
- 🎨 Streamlit Standard Theme: Fully compatible design
- 🔄 Drag & Drop: File drag and drop support
- ⌨️ Ctrl+V: Paste images from clipboard
- ⚙️ Customizable: Rich configuration options
Installation
pip install st-chat-input-multimodal
Basic Usage
import streamlit as st
from st_chat_input_multimodal import multimodal_chat_input
# Basic usage
result = multimodal_chat_input()
if result:
# Display text
if result['text']:
st.write(f"Text: {result['text']}")
# Display uploaded files
if result['files']:
for file in result['files']:
import base64
base64_data = file['data'].split(',')[1]
image_bytes = base64.b64decode(base64_data)
st.image(image_bytes, caption=file['name'])
# Display voice input metadata
if result.get('audio_metadata'):
st.write(f"Voice input used: {result['audio_metadata']['used_voice_input']}")
Advanced Usage
Voice Input Features
# Enable voice input
result = multimodal_chat_input(
enable_voice_input=True,
voice_recognition_method="web_speech", # or "openai_whisper"
voice_language="ja-JP",
max_recording_time=60
)
# Using OpenAI Whisper API
result = multimodal_chat_input(
enable_voice_input=True,
voice_recognition_method="openai_whisper",
openai_api_key="sk-your-api-key",
voice_language="ja-JP"
)
Custom Configuration
result = multimodal_chat_input(
placeholder="Please enter your message...",
max_chars=500,
accepted_file_types=["jpg", "png", "gif", "webp"],
max_file_size_mb=10,
disabled=False,
key="custom_chat_input"
)
Chat Usage
import streamlit as st
import base64
from st_chat_input_multimodal import multimodal_chat_input
# Page configuration
st.set_page_config(
page_title="Multimodal Chat Input Demo",
page_icon="💬",
layout="wide"
)
st.subheader("💭 Multimodal Chat Input Demo")
st.markdown("Simulate a chat application with voice input and file upload.")
# Manage history in session state
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
# Input for new messages
chat_result = multimodal_chat_input(
placeholder="Enter chat message...",
enable_voice_input=True, # Enable voice input for chat as well
key="chat_input"
)
if chat_result:
st.session_state.chat_history.append(chat_result)
# Display chat history
if st.session_state.chat_history:
for i, message in enumerate(st.session_state.chat_history):
with st.chat_message("user"):
if message.get("text"):
st.write(message["text"])
if message.get("files"):
for file in message["files"]:
try:
base64_data = file['data'].split(',')[1] if ',' in file['data'] else file['data']
image_bytes = base64.b64decode(base64_data)
st.image(image_bytes, caption=file['name'], width=200)
except:
st.write(f"📎 {file['name']}")
# Display voice input information
if message.get("audio_metadata") and message["audio_metadata"]["used_voice_input"]:
st.caption(f"🎤 Voice input ({message['audio_metadata']['transcription_method']})")
# Clear history
if st.button("Clear History"):
st.session_state.chat_history = []
st.rerun()
Example Chat App
License
MIT License
Author
tsuzukia21
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file st_chat_input_multimodal-1.0.5.tar.gz.
File metadata
- Download URL: st_chat_input_multimodal-1.0.5.tar.gz
- Upload date:
- Size: 132.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
287ebb49cf108f0aef097a07cca54558c453a69fcab69ee4c12f67217beba37b
|
|
| MD5 |
e99c87be9e7388566e5c6403a494c179
|
|
| BLAKE2b-256 |
bc6aace6b3604ed7da4778ddc9fe2d1494c9594838ed3bb766a5ecc7c5bf28fc
|
File details
Details for the file st_chat_input_multimodal-1.0.5-py3-none-any.whl.
File metadata
- Download URL: st_chat_input_multimodal-1.0.5-py3-none-any.whl
- Upload date:
- Size: 130.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fe83666e45f86d9db48f05fad1f52bdfda8ce2ab41cecdfc634ecf8ddc849f4
|
|
| MD5 |
7816e1a95417848938c169c2cb26ef03
|
|
| BLAKE2b-256 |
addff3b8e600e86c5500d36cf2517beeb403e3ec8db30abc9bb0d58902fd05e0
|