рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рдмрд╛рд░ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдХреИрдо рд╕реЗ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЕрдм рдпрд╣ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ - рдЖрд╡рд╛рдЬ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдгред
рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдЬреЛ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЗ рд╕рднреА рд╕рдмрд╕рд┐рд╕реНрдЯрдореЛрдВ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЛрдб рд╕реЗ рдХрд╛рдлреА рджреВрд░ рдЬрд╛ рдЪреБрдХрд╛ рд╣реВрдВ, рдирдП рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг trac-
рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рддрд░рдг рдХреЛ
GNU GPLv3 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ;)
рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА
рд╡рд╛рдХреН рдкрд╣рдЪрд╛рди
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ
рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ
рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛, рд╣рдо рдзреНрд╡рдирд┐ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП Google рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдУрдПрд╕ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЖрд╡рд╛рдЬ рдЦреЛрдЬ рдореЗрдВ рдХрдИ рд▓реЛрдЧ рдЖ рдЧрдП рд╣реИрдВред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣реА рдЖрд╡рд╛рдЬ рдЦреЛрдЬ Google рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдВрдкрдиреА рдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд╛рд░реАрдЧрд░реЛрдВ рдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- рд╣рдо 16000 рд╣рд░реНрдЯреНрдЬ, рдореЛрдиреЛ рдХреА рдзреНрд╡рдирд┐ рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╡-рдлрд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
- рд╣рдо рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реНрд▓реИрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ
- рд╣рдо Google Chrome рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирдиреЗ рдХреЗ рдмрд╣рд╛рдиреЗ https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-RU рдкрддреЗ рдкрд░ рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрддреЗ рд╣реИрдВ
- рд╣рдореЗрдВ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ
рдЙрддреНрддрд░ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
{"status":0,"id":"84e03bf4efe17fa7856333560d6faba4-1","hypotheses":[{"utterance":" ","confidence":0.85437811}]}
рд╣рдо рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ -
рдЙрдЪреНрдЪрд╛рд░рдг рдФрд░
рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ ред рдкрд╣рд▓рд╛ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╢рдмреНрдж / рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИ, рджреВрд╕рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рд╕рдЯреАрдХрддрд╛ рд╣реИред рдпрджрд┐
рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ 0.5 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдиреНрдпрддрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред
рднрд╛рд╖рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг
Google рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╛рд╖рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рдкрд╛рда рд╕реЗ рдзреНрд╡рдирд┐ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрдЯрд┐рд▓ рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ: http://translate.google.com/translate_tts?tl=en&q=text, рд╣реЗрдбрд░ рдореЗрдВ Google Chrome рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ
- рдПрдордкреА 3 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд┐рд▓реНрдХреБрд▓ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдХреБрдЫ рдХреЛрдб
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛,
рдкрд░реНрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рджрд╛рдирд╡ рд╣рдорд╛рд░реЗ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдЧрд╛ред рдореИрдВ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рд▓рд╛рдд рдордд рдорд╛рд░реЛ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рд╡рд┐рдирдореНрд░ рдиреМрдХрд░ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рд╣реИ :)
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:
- рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдорд╛рдиреНрдпрддрд╛ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
- рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рджреЗрдВ
- рдпрджрд┐ рдХрдорд╛рдВрдб рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рддреЛ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ
- рд╕реЗрдВрд╕рд░ рдФрд░ рдХреИрдорд░реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ
- рдЖрдВрдХрдбрд╝реЗ, рд░рд┐рдХреЙрд░реНрдб рдФрд░ рд▓реЙрдЧ рд░рдЦреЗрдВ
- рд╕реНрдЯреЗрдЯрд╕, рдХреИрдорд░рд╛ рджреЗрдЦрдиреЗ, рдХрдорд╛рдВрдб рджреЗрдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред
рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛ рдпрд╛ рдЪреВрдХ рдЧрдпрд╛, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпреЗ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИрдВред рдЪрд▓рд┐рдП рдЕрдм рдпрд╣ рд╕рдм рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдкрд░реНрд▓ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдбреЗрдореЙрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
рдиреЗрдЯ :: рд╕рд░реНрд╡рд░ :: рдлреЛрд░реНрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
perl рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред
рдпрд╣рд╛рдВ рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЬрд╛рдПрдВред рд╣рдо
рдиреЗрдЯ :: рд╕рд░реНрд╡рд░ :: рдлреЛрд░реНрдХ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд
рдЖрдИрдУрдПрди рдирд╛рдо рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реЙрдЧрд╣реЛрд╕реНрдЯ рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ рдФрд░ "рдбреЗрдореЙрди" рдореЛрдб рдХреЗ рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдкрд░ рдкреЛрд░реНрдЯ 16000 рдкрд░ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо
process_request () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░реВрдк
рдЯреЗрдХреНрд╕реНрдЯ рдирдВрдмрд░ рдореЗрдВ рдкрд╛рда рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ
рдЯреЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рд╣рдореЗрдВ рднреЗрдЬрд╛ рдерд╛ред
рдкрдж рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЯреЛрдЯреЗрдХреНрд╕ () рдлрд╝рдВрдХреНрд╢рди
рдХреНрдпрд╛ рдХрд░рддрд╛
рд╣реИ ? рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛!
sub toText { my $num = shift; print "+OK - Trying recognize text\n"; my $curl = WWW::Curl::Easy->new; $curl->setopt(CURLOPT_HEADER,1); $curl->setopt(CURLOPT_POST,1);
рдореИрдВрдиреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдпреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдкрд╛рда рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред Google рдХреЛ
рдЗрдирдкреБрдЯ-рдирдВрдмрд░.рдлреНрд▓реИрдХ рдирд╛рдордХ
рдбреЗрдЯрд╛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рджреА
рдЬрд╛рддреА рд╣реИ ред рдпрд╣ рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ, рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рджред рдХреЗ рдмрд╛рдж - рдЬрд╡рд╛рдм рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ 0.5 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкрд╛рда рдХреЛ
рдЪреЗрдХрд╕реАрдПрдордбреА () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдзреНрд╡рдирд┐ рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐
рдХрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛:
use WWW::Curl::Easy; use WWW::Curl::Form; use JSON::XS;
рдЕрдм рднрд╛рд╖рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрд╣ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ
SayText () рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╛рда рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╡рд╛рдЬ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдХреБрдЫ рд▓рд╛рдкрддрд╛ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
require Encode; use URI::Escape; use LWP::UserAgent; our $mp3_data;
рдЕрдм рдХреЛрдб рд╣реА:
sub sayText { my $text = shift; print "+OK - Speaking \"$text\"\n"; my $url = "http://translate.google.com/translate_tts?tl=ru&q=".uri_escape_utf8($text); my $ua = LWP::UserAgent->new( agent => "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.872.0 Safari/535.2"); $ua->get($url, ':content_cb' => \&callback); open (MP3, "|padsp splay -M") or die "[err] Can't save: $!\n"; print MP3 $mp3_data; close(MP3); $mp3_data = undef; print "+OK - Done!\n"; return; } sub callback { my ($data, $response, $protocol) = @_; $mp3_data .= $data;
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдЯреНрд░реАрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рдХреЙрд▓рдмреИрдХ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ
$ mp3_data рдЪрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рдЗрдк рд╕реЗ
рд╕реНрдкрд▓рд╛рдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
рдкреИрдбреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдУрдПрд╕рдПрд╕ рдХреЗ рдЕрдиреБрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдЙрдмрдВрдЯреВ рдореЗрдВ, рдУрдПрд╕рдПрд╕ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
-M рд╕реНрд╡рд┐рдЪ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
рдбреЗрдЯрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ
рдлрд╝реНрд▓реИрдХ рдореЗрдВ рд░рд╣рд╕реНрдпрдордп рдлрд╛рдЗрд▓реЗрдВ рдХрд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрд╕рд╛ рдХрд░рддреА рд╣реИ:
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмреБрд▓рд╛рдП рдЧрдП рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рд╛рд░реВрдк рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ:
- rec ( sox рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рддрд░рдг рдХрд┐рдЯ рд╕реЗ)
- flac
рд░рд┐рдХ рдХрдорд╛рдВрдб рдирд╛рдо рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд▓рдШреБ 4-рд╕реЗрдХрдВрдб рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдлреНрд▓реИрдХ рджреНрд╡рд╛рд░рд╛ рдкрд┐рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рдбреЗрдореЙрди рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
рдЯреЗрдХреНрд╕реНрдЯ рдХрдорд╛рдВрдб рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
that_same_randomnom_number ред рдореИрдВ 4 рд╕реЗрдХрдВрдб рдХреЗ рдЫреЛрдЯреЗ рдиреЛрдЯреНрд╕ рдХреНрдпреЛрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ? рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╣рдорд╛рд░реА рдЖрд╡рд╛рдЬ рдХреЛ рдХреИрд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ред рджреЛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реИрдВ:
- рд╕реНрдерд╛рдпреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ
- рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдореБрдЭреЗ рдЦрд░рд╛рдм рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛;) рд╣рдо рд╕реНрдерд╛рдпреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдХрдИ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП Google рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореЗрд░реА рд╕рднреА рдЯреАрдореЗрдВ рдЕрдм рддрдХ рдЕрдзрд┐рдХрддрдо 3-4 рд╕реЗрдХрдВрдб рдореЗрдВ рдЖрддреА рд╣реИрдВред рдпрджрд┐ рд╣рдо 1 рд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрдИ (рдорд╛рди рд▓реАрдЬрд┐рдП, 5) рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рд░рдВрддрд░ рдЖрд╡рд╛рдЬ рдорд╛рдиреНрдпрддрд╛ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
for(1..5) { system("perl mic.pl &>/dev/null"); sleep 1; }
рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдкреВрд░реЗ рдкрд░рд┐рд╕рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
checkcmd () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рд╣реЛрдЧрд╛ ред рд╣рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рдкрддреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
sub checkcmd { my $text = shift; if($text =~ //) { sayText(" - $text");
рдЕрдм, рдЗрд╕реЗ рдПрдХ рдвреЗрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рд╣рдореЗрдВ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реАрдВ, рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ
srv.pl рдФрд░
mic.pl рдХрд╣рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдорд╛рд░реА рдзреНрд╡рдирд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдбреЗрдЯрд╛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред
srv.pl
mic.pl
рдХреНрдпрд╛ рд╣реБрдЖ?
рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВ:
chmod 755 srv.pl mic.pl
Srv.pl рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ, рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ: тАЬрд╕рд┐рд╕реНрдЯрдо! рдПрдХ, рджреЛ, рддреАрди! " рд╣рдо рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕реБрдирддреЗ рд╣реИрдВ: "рдЖрдкрдХреА рдЯреАрдо - рдПрдХ, рджреЛ, рддреАрдиред" рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рдЯреАрдо рдХрдИ рдзреНрд╡рдирд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЧрд┐рд░реЗрдЧреА рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдХрдИ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдкрд░ рдПрдХ рдЪреЗрдХ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЖрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рднрд╛рд╖рдг рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд╣реИ;)
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдЙрдкрд╣рд╛рд░реЛрдВ рдФрд░ рдХреИрдорд░рд╛ рджреЗрдЦрдиреЗ рдХреЗ рд╕рд╛рде рд╡реЗрдм-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрд╕ рд╕рдмрдХреЛ рдЬрдХрдбрд╝рдирд╛ рд╣реИред
UPD: рднрд╛рдЧ 4