рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд┐рддрдиреА рдореЗрд╣рдирдд рд▓рдЧреЗрдЧреА, рдпрд╛ рдЗрд╕рдореЗрдВ рдХрд┐рддрдиреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЬрдмрдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдиреАрдп (рдСрдлрд╝рд▓рд╛рдЗрди) рдПрд╕рдЯреАрдЯреА рд╕рд┐рд╕реНрдЯрдо рдорд╛рдиреНрдпрддрд╛ рдореЗрдВ рдЙрддрдиреЗ рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдиреЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ, рдлрд┐рд░ рднреА рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ . (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЧрд░ рд╕реЗрд╡рд╛ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ)
рдирд┐рдЬреА рдкреГрд╖реНрдарднреВрдорд┐:
рд╣реЛрдо рдЗрдВрдЯрд░рдиреЗрдЯ рднрджреНрджрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдмреБрдирд┐рдпрд╛рджреА рдЕрдиреБрд░реЛрдз рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкрд┐рдЫрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрднреА-рдХрднреА рдХрдиреЗрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдмрдХрд┐ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдСрдирд▓рд╛рдЗрди рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рдСрдлрд╝рд▓рд╛рдЗрди рд╣реЛрдВрдЧреЗ)ред
рд╕реБрдЭрд╛рд╡:
рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ:
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ / рдиреНрдпреВрдЬрд▓реЗрдЯрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирдорд╕реНрддреЗ,
рдкреБрд▓ рдЕрдиреБрд░реЛрдз #ремрелрем рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ #ремрелрел рджреЗрдЦреЗрдВред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдкреЙрдХреЗрдЯреНрд╕рдлрд┐рдирдХреНрд╕ рдХреЛ рдПрд╕рдЯреАрдЯреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ/рднрд╛рд╖рдг рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕реНрдкреИрдирд┐рд╢ рдЖрдВрддрд░рд┐рдХрдХрд░рдг рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PocketSphinx рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╡рд┐рдХрд┐ рдкреГрд╖реНрда рджреЗрдЦреЗрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, "рд╕реНрдкреИрдирд┐рд╢ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдПрд╕рдЯреАрдЯреА рдЪреБрдиреЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ" рд╢реАрд░реНрд╖рдХ рд╡рд╛рд▓рд╛ рдЕрдзреНрдпрд╛рдпред
рдпрджрд┐ рдЖрдк рдХрд▓рджреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз #438 рднреА рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рд╕рд╛рд▓ рдмрд╛рдж, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдирд▓рд╛рдЗрди рдФрд░ рдСрдлрд▓рд╛рдЗрди рджреЛрдиреЛрдВ рдПрд╕рдЯреАрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рддрд░реАрдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ред рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ PocketSphinx рдХрд╛ рдСрдлрд╝рд▓рд╛рдЗрди STT рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
Mycroft.stt.__init__.py рдкрд░ _from mycroft.util import Connected_ рдЬреЛрдбрд╝реЗрдВ
рдлрд┐рд░ рдмрдирд╛рдПрдВ() рд╡рд┐рдзрд┐ рдкрд░, рдЬреЛрдбрд╝реЗрдВ:
if connected() is True:
return PocketSphinxSTT()
else:
try :
...
рдлрд┐рд░ рдЖрдкрдХреЗ mainskill.__init__.py рдкрд░, рдХреЛрдИ рдЗрд╕ рдХреЙрд▓ рдХреЛ рд╣реИрдВрдбрд▓_рдмреВрдЯ_рдлрд┐рдирд┐рд╢реНрдб рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
рдпрд╣ check_connection_switchSTT рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдСрдбрд┐рдпреЛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░ 30 рд╕реЗрдХрдВрдб рдореЗрдВред
рдореЗрд░рд╛ рдХрд╛рд░реНрдп рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
def check_connection_switchSTT(self):
if connected() is True:
self.newstate = "yes"
else:
self.newstate = 'no'
if self.prevstate != self.newstate:
self.prevstate = self.newstate
LOG.info("Internet connectivity changed")
subprocess.call(['/path/to/stop-mycroft.sh', 'voice'])
subprocess.call(['/path/to/start-mycroft.sh', 'voice'])
`
рдХреМрд╢рд▓ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрд╡.рдкреНрд░рдЪрд▓рд┐рдд рд╣реЛрдирд╛
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рдореЗрд░реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдбрд╛рдЙрди рд╣реЛрдиреЗ рдкрд░ рдлреЙрд▓рдмреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЬрд░реВрд░рдд рдереАред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкрд┐рдЫрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ
Pocketsphinx рдПрдХ рдореГрдд рдЕрдВрдд рд╣реИ, рдпрд╣ рдПрдХ рдлреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдВрджреБ рддрдХ рдмреЗрдХрд╛рд░ рд╣реИ
рдореИрдВрдиреЗ рдСрдлрд╝рд▓рд╛рдЗрди рдкреЙрдХреЗрдЯреНрд╕рдлрд┐рдирдХреНрд╕ рдПрд╕рдЯреАрдЯреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/MycroftAI/mycroft-core/pull/1184 рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдФрд░ рдХреЗрд╡рд▓ cli рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрд╡ рдкрд░реАрдХреНрд╖рдг 99,9% рдмрд╛рд░ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ
рдХрд▓рджреА рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ 75% рдмрд╛рд░ рд╣рд╛рд░ рдорд╛рдирддрд╛ рд╣реВрдВ!
рдЖрдкрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдбреАрдкрд╕реНрдкреАрдЪ/рдХрд▓рджреА рдХреЛ рд╕реНрд╡рдпрдВ рд╣реЛрд╕реНрдЯ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рднреА рдкреНрд░рд╛рдЗрдо рдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ
рдЖрдкрдХреЛ рдореЗрд░реЗ рдкреЙрдХреЗрдЯреНрд╕рдлрд╝рд┐рдВрдХреНрд╕ рд╕реНрдерд╛рдиреАрдп рд╢реНрд░реЛрддрд╛ (рд╕реАрдорд┐рдд рд╢рдмреНрджрд╛рд╡рд▓реА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдХрд▓рджреА рд╕реНрдкреЙрдЯрд░ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╡реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдкреНрд░рдорд╛рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЙрдиреНрд╣реЗрдВ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдлреЙрд▓рдмреИрдХ рдПрд╕рдЯреАрдЯреА рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИ
рдореБрдЭреЗ рдкреЙрдХреЗрдЯреНрд╕рдлрд┐рдВрдХреНрд╕ рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рдХрдо рд╕рдЯреАрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ https://github.com/jcsilva/docker-kaldi-gstreamer-server рдХреЗ рд╕рд╛рде рдХрд▓рджреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рднрд╛рдЧреНрдп рдорд┐рд▓рд╛
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдереА рдХрд┐ рдпрд╣ 2017 рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП ymmv, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдорд┐рд▓реЗрдЧрд╛, рдореБрдЭреЗ рдЕрдкрдиреЗ рдорд╛рдпрдХреНрд░реЙрдлреНрдЯ рдХреА рдпрд╛рдж рдЖрддреА рд╣реИ :)
рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдерд╛рдиреАрдп рд╢реНрд░реЛрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдореИрдВ рдПрдХ рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рдкреАрдЖрд░ рдХрд░реВрдБрдЧрд╛ред
Vosk RPI рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 16 рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ (50MB) STT-рдореЙрдбрд▓ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдЕрдм рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ ...
@domcross рдпрд╣рд╛рдВ https://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py
рдмрд╕ #2594 рдХреЗ рд╡рд┐рд▓рдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХреВрдВ :)