рдзреНрд╡рдирд┐ рдореЗрд▓ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЗрд╡рд╛ Google рдХреЛ рдзрдиреНрдпрд╡рд╛рдж (FreeSWITCH рд╕рдВрд╕реНрдХрд░рдг)

рдЖрдзреБрдирд┐рдХ рдЯреЗрд▓реАрдлреЛрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рд╡реЙрдпрд╕ рдореЗрд▓ рд╕реЗрд╡рд╛ рдЗрддрдиреА рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдорд╛рдВрдЧ рдореЗрдВ рд╣реИ рдХрд┐ "рд╕реЙрдлреНрдЯ" рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реЙрдпрд╕ рдореЗрд▓ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, "рдЖрдпрд░рди" рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдкреВрд░реЗ рд╡реЙрдпрд╕ рдореЗрд▓ рдХрд╛рд░реНрдб рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЯреЗрд▓реАрдХреЙрдо рдСрдкрд░реЗрдЯрд░ рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдореИрдВ рдЧреНрд░рд╛рд╣рдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛, рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рдзреНрд╡рдирд┐ рдореЗрд▓ рднреЗрдЬ рджреЗрдЧрд╛ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдкрддреНрд░) рдХрд┐ рдПрдХ рдЖрд╡рд╛рдЬ рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ - рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд╕реБрдиреЗрдВред рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рддреБрд░рдВрдд рдореЗрд▓ рдореЗрдВ рдЖрддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдкрддреНрд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рддреБрд░рдВрдд рд╕реБрдиреЗрдВред рд▓реЗрдХрд┐рди рдЖрдк рд╕реЗрд╡рд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

FreeSWITH + Google = рдзреНрд╡рдирд┐ рдореЗрд▓ 2.0


рд╕реЗрд╡рд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЖрдк рд╡реЙрдпрд╕ рдореЗрд▓ рдкрд╛рда, рдЙрд░реНрдл тАЛтАЛрднрд╛рд╖рдг-рд╕реЗ-рдкрд╛рда рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдПрдХ рдмрд┐рдЯред FreeSWITCH рдлреЛрд░рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ Asterisk рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП Google рднрд╛рд╖рдг рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ FreeSWITCH рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдореБрдЭреЗ рд▓реЗрдЦрдХреАрдп рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдореИрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреВрдВрдЧрд╛:

#!/bin/sh echo "1 SoX Sound Exchange - Convert WAV to FLAC with 16000" sox $1 message.flac pad .1 0 rate 16k echo "2 Submit to Google Voice Recognition" wget -q -U "Mozilla/5.0" --post-file message.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium" > message.ret echo "3 SED Extract recognized text" cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' > message.txt echo "4 Remove Temporary Files" rm message.flac # rm message.ret echo "5 Show Text " cat message.txt 


рдореИрдВрдиреЗ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрджрд▓ рджрд┐рдпрд╛, рдЗрд╕реЗ / usr / рд╕реНрдерд╛рдиреАрдп / freeswitch / рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 #!/bin/sh cd /usr/local/freeswitch/scripts/ sox tmp.wav message.flac pad .1 0 rate 16k > /dev/null 2>&1 wget -q -U "Mozilla/5.0" --post-file message.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=ru-RU&client=chromium" > message.ret cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' >> messages.log cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' | iconv -f UTF8 -t KOI8-U | mutt -x -s "new voice mail" -- moya_pochta@domen.ru rm message.flac rm tmp.wav rm message.ret 


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдо tmp.wav рдирд╛рдордХ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ FLAC рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ Google рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред рд╣рдо Google рдХреЛ рдпрд╣ рднреА рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд░реВрд╕реА рднрд╛рд╖рдг рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдЙрдЪреНрдЪрд╛рд░рдг рдХреЗ рд╕рд╛рде рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рда рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдлрд╝реЙрд░реНрдо {"рд╕реНрдерд┐рддрд┐": 0, "рдЖрдИрдбреА": "4ee1ad1a44f3cfb5858341972dd008e9c-1", "рдкрд░рд┐рдХрд▓реНрдкрдирд╛": "{" рдкреВрд░реНрдгрддрд╛ ":" рдореИрдВ рдмрд╛рдж рдореЗрдВ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ "," рд╡рд┐рд╢реНрд╡рд╛рд╕ ": 0.43928865}] рдХрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

Sed рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╛рда рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдореЗрд▓ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдФрд░ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдорд╛рдиреНрдпрддрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ Google рдХрд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧреБрдгрд╛рдВрдХ) рдФрд░ рдЗрд╕реЗ рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреА рднреЗрдЬреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╛ рддреЛ рдХрдо рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕рдВрд▓рдЧреНрдирдХ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ - рдкрддреНрд░ рдХреЛ рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ред рдпрд╣ рдореНрдпреВрдЯ рдХреЗ рд▓рд┐рдП "-a" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдордкреА 3 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред

рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ tmp.wav рд╕рдВрджреЗрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ FreeSWITCH рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрджрд░реНрдн рдореЗрдВ xml рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдореНрдорд┐рд▓рд┐рдд рдХреАрдВ:

 <extension name="s2t"> <condition field="destination_number" expression="^11111$"> <action application="export" data="api_hangup_hook=system /usr/local/freeswitch/scripts/s2t.sh"/> <action application="answer"/> <action application="playback" data="/usr/local/freeswitch/sounds/ru/RU/elena/voicemail/8000/vm-hello.wav"/> <action application="record" data="/usr/local/freeswitch/scripts/tmp.wav"/> <action application="hangup"/> </condition> </extension> 


FreeSWITCH рдбрд╛рдпрд▓рд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЗ рджрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдкрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВред Api_hangup_hook рдХреЗ рд╕рд╛рде, рд╣рдо FreeSITCH рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЙрд▓ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдлрд╛рдЗрд▓ /usr/local/freeswitch/scripts/tmp.wav рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ
FreeSWITCH рджреНрд╡рд╛рд░рд╛ tmp.wav рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЯреЗрд▓реАрдлреЛрди рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ /usr/local/freeswitch/scripts/s2t.sh рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рд┐рдЦрд╛ рдерд╛ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЖрд╡рд╛рдЬ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдФрд░ (рдмрд┐рдирд╛ рдкрддреНрд░ рдЦреЛрд▓реЗ рднреА) рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред

рдЫрд╡рд┐

Source: https://habr.com/ru/post/In149750/


All Articles