@@ -225,14 +225,30 @@ def handle_enable_limited_vocab(self, message):
225225 lang = message .data .get ("lang" ) or Configuration .get ().get ("lang" , "en-us" )
226226 fallback = message .data .get ("english_fallback" , False )
227227 permanent = message .data .get ("permanent" , False )
228- words = ["[unk]" ]
229- for voc_file in message .data .get ("vocabs" , []):
230- voc = resolve_resource_file (f"text/{ lang } /{ voc_file } .voc" )
228+
229+ # samples defined in message.data
230+ words = ["[unk]" ] + message .data .get ("samples" , [])
231+
232+ def read_file (voc_file , ext ):
233+ voc = resolve_resource_file (f"text/{ lang } /{ voc_file } .{ ext } " ) or \
234+ resolve_resource_file (f"locale/{ lang } /{ voc_file } .{ ext } " )
231235 if lang != "en-us" and not voc and fallback :
232- voc = resolve_resource_file (f"text/en-us/{ voc_file } .voc" )
236+ voc = resolve_resource_file (f"text/en-us/{ voc_file } .{ ext } " ) or \
237+ resolve_resource_file (f"locale/en-us/{ voc_file } .{ ext } " )
233238 if voc :
234- for w in read_vocab_file (voc ):
235- words += w
239+ return [item for sublist in read_vocab_file (voc ) for item in sublist ]
240+ return []
241+
242+ # read voc files
243+ for voc_file in message .data .get ("vocabs" , []):
244+ words += read_file (voc_file , "voc" )
245+ for voc_file in message .data .get ("dialogs" , []):
246+ words += read_file (voc_file , "dialog" )
247+ for voc_file in message .data .get ("intents" , []):
248+ words += read_file (voc_file , "intent" )
249+ for voc_file in message .data .get ("entities" , []):
250+ words += read_file (voc_file , "entity" )
251+
236252 LOG .info (f"Enabling limited vocab: { words } " )
237253 if hasattr (self .loop .stt , "enable_limited_vocabulary" ):
238254 try :
0 commit comments