1- from typing import Optional , Dict , Tuple , List
1+ from typing import Optional , Dict , Tuple , List , Union
22
33from enum import Enum
4- from pydantic import Field
4+ from pydantic import BaseModel , Field
55import streamlit as st
66from ghostos .container import Container
77from ghostos .prototypes .streamlitapp .utils .session import Singleton
88from ghostos .contracts .configs import YamlConfig , Configs
99from ghostos .contracts .assets import ImageAssets , FileInfo , AudioAssets
1010from ghostos .contracts .documents import DocumentRegistry , Documents
1111from PIL .Image import Image as ImageType
12- from ghostos .core .messages .message_classes import ImageAssetMessage
1312from ghostos .helpers import GHOSTOS_DOMAIN , uuid
1413from streamlit .runtime .uploaded_file_manager import DeletedFile , UploadedFile
1514
@@ -19,6 +18,21 @@ def get_container() -> Container:
1918 return Singleton .get (Container , st .session_state )
2019
2120
21+ class AudioInputConf (BaseModel ):
22+ sample_rate : int = Field (24000 )
23+ interval : float = Field (0.5 )
24+ channels : int = Field (1 )
25+ chunk_size : int = Field (1024 )
26+ input_device_index : Union [int , None ] = Field (None )
27+
28+
29+ class AudioOutputConf (BaseModel ):
30+ sample_rate : int = Field (24000 )
31+ channels : int = Field (1 )
32+ buffer_size : int = Field (1024 * 5 )
33+ output_device_index : Union [int , None ] = Field (None )
34+
35+
2236class AppConf (YamlConfig ):
2337 relative_path = "streamlit_app.yml"
2438
@@ -29,6 +43,9 @@ class AppConf(YamlConfig):
2943 default_factory = dict ,
3044 )
3145
46+ audio_input : AudioInputConf = Field (default_factory = AudioInputConf )
47+ audio_output : AudioOutputConf = Field (default_factory = AudioOutputConf )
48+
3249 class BoolOpts (str , Enum ):
3350 HELP_MODE = "ghostos.streamlit.app.help_mode"
3451 """global help mode"""
0 commit comments