1414from .microsoft_stt import MicrosoftSTT
1515from .handler import MicrosoftEventHandler
1616from .version import __version__
17+ from . import SpeechConfig
1718
1819_LOGGER = logging .getLogger (__name__ )
1920
2021stop_event = asyncio .Event ()
2122
23+
2224def handle_stop_signal (* args ):
2325 """Handle shutdown signal and set the stop event."""
2426 _LOGGER .info ("Received stop signal. Shutting down..." )
2527 stop_event .set ()
2628
29+
2730def parse_arguments ():
2831 """Parse command-line arguments."""
2932 parser = argparse .ArgumentParser ()
30- parser .add_argument ("--service-region" , default = os .getenv ("AZURE_SERVICE_REGION" ), help = "Microsoft Azure region (e.g., westus2)" )
31- parser .add_argument ("--subscription-key" , default = os .getenv ("AZURE_SUBSCRIPTION_KEY" ), help = "Microsoft Azure subscription key" )
32- parser .add_argument ("--uri" , default = "tcp://0.0.0.0:10300" , help = "unix:// or tcp://" )
33- parser .add_argument ("--download-dir" , default = "/tmp/" , help = "Directory to download languages.json into (default: /tmp/)" )
34- parser .add_argument ("--language" , default = "en-US" , help = "Default language to set for transcription" )
35- parser .add_argument ("--update-languages" , action = "store_true" , help = "Download latest languages.json during startup" )
33+ parser .add_argument (
34+ "--service-region" ,
35+ default = os .getenv ("AZURE_SERVICE_REGION" ),
36+ help = "Microsoft Azure region (e.g., westus2)" ,
37+ )
38+ parser .add_argument (
39+ "--subscription-key" ,
40+ default = os .getenv ("AZURE_SUBSCRIPTION_KEY" ),
41+ help = "Microsoft Azure subscription key" ,
42+ )
43+ parser .add_argument (
44+ "--uri" , default = "tcp://0.0.0.0:10300" , help = "unix:// or tcp://"
45+ )
46+ parser .add_argument (
47+ "--download-dir" ,
48+ default = "/tmp/" ,
49+ help = "Directory to download languages.json into (default: /tmp/)" ,
50+ )
51+ parser .add_argument (
52+ "--language" , default = "en-US" , help = "Default language to set for transcription"
53+ )
54+ parser .add_argument (
55+ "--update-languages" ,
56+ action = "store_true" ,
57+ help = "Download latest languages.json during startup" ,
58+ )
59+ parser .add_argument (
60+ "--profanity" ,
61+ default = "masked" ,
62+ choices = ["masked" , "removed" , "raw" ],
63+ help = "Profanity setting for speech recognition" ,
64+ )
3665 parser .add_argument ("--debug" , action = "store_true" , help = "Log DEBUG messages" )
3766 return parser .parse_args ()
3867
68+
3969def validate_args (args ):
4070 """Validate command-line arguments."""
4171 if not args .service_region or not args .subscription_key :
42- raise ValueError ("Both --service-region and --subscription-key must be provided either as command-line arguments or environment variables." )
72+ raise ValueError (
73+ "Both --service-region and --subscription-key must be provided either as command-line arguments or environment variables."
74+ )
4375 # Reinstate key validation with more flexibility to accommodate complex keys
44- if not re .match (r'^[A-Za-z0-9\-_]{40,}$' , args .subscription_key ):
45- _LOGGER .warning ("The subscription key does not match the expected format but will attempt to initialize." )
76+ if not re .match (r"^[A-Za-z0-9\-_]{40,}$" , args .subscription_key ):
77+ _LOGGER .warning (
78+ "The subscription key does not match the expected format but will attempt to initialize."
79+ )
80+
4681
4782async def main () -> None :
4883 """Start Wyoming Microsoft STT server."""
4984 args = parse_arguments ()
5085 validate_args (args )
5186
87+ speech_config = SpeechConfig (
88+ subscription_key = args .subscription_key ,
89+ service_region = args .service_region ,
90+ profanity = args .profanity ,
91+ language = args .language ,
92+ )
93+
5294 # Set up logging
5395 logging .basicConfig (level = logging .DEBUG if args .debug else logging .INFO )
5496 _LOGGER .debug ("Arguments parsed successfully." )
@@ -98,7 +140,7 @@ async def main() -> None:
98140 # Load Microsoft STT model
99141 try :
100142 _LOGGER .debug ("Loading Microsoft STT" )
101- stt_model = MicrosoftSTT (args )
143+ stt_model = MicrosoftSTT (speech_config )
102144 _LOGGER .info ("Microsoft STT model loaded successfully." )
103145 except Exception as e :
104146 _LOGGER .error (f"Failed to load Microsoft STT model: { e } " )
@@ -121,6 +163,7 @@ async def main() -> None:
121163 except Exception as e :
122164 _LOGGER .error (f"An error occurred while running the server: { e } " )
123165
166+
124167if __name__ == "__main__" :
125168 # Set up signal handling for graceful shutdown
126169 signal .signal (signal .SIGTERM , handle_stop_signal )
0 commit comments