@@ -72,24 +72,54 @@ def to_dict(self):
7272 "directive" : self .directive ,
7373 "dialog_id" : self .dialog_id
7474 }
75+ @dataclass
76+ class AsrPostProcessing :
77+ replace_words : list = field (default = None )
78+
79+ def to_dict (self ):
80+ if self .replace_words is None :
81+ return None
82+ if len (self .replace_words ) == 0 :
83+ return None
84+ return {
85+ "replace_words" : [word .to_dict () for word in self .replace_words ]
86+ }
87+
88+ @dataclass
89+ class ReplaceWord :
90+ source : str = field (default = None )
91+ target : str = field (default = None )
92+ match_mode : str = field (default = None )
7593
94+ def to_dict (self ):
95+ return {
96+ "source" : self .source ,
97+ "target" : self .target ,
98+ "match_mode" : self .match_mode
99+ }
76100
77101@dataclass
78102class Upstream :
79103 """struct for upstream"""
80104 audio_format : str = field (default = "pcm" ) # 上行语音格式,默认pcm.支持pcm/opus
81105 type : str = field (default = "AudioOnly" ) # 上行类型:AudioOnly 仅语音通话; AudioAndVideo 上传视频
82106 mode : str = field (default = "tap2talk" ) # 客户端交互模式 push2talk/tap2talk/duplex
83- # sample_rate: int # 合成音频采样率
107+ sample_rate : int = field (default = 16000 ) # 音频采样率
108+ vocabulary_id : str = field (default = None )
109+ asr_post_processing : AsrPostProcessing = field (default = None )
84110 pass_through_params : dict = field (default = None )
85111
86112 def to_dict (self ):
87113 upstream : dict = {
88114 "type" : self .type ,
89115 "mode" : self .mode ,
90116 "audio_format" : self .audio_format ,
91- # "sample_rate": self.sample_rate
117+ "sample_rate" : self .sample_rate ,
118+ "vocabulary_id" : self .vocabulary_id ,
92119 }
120+ if self .asr_post_processing is not None :
121+ upstream ["asr_post_processing" ] = self .asr_post_processing .to_dict ()
122+
93123 if self .pass_through_params is not None :
94124 upstream .update (self .pass_through_params )
95125 return upstream
0 commit comments