User Tools

Site Tools


голосовые_сервисы_помогут_голосовой_почте

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
голосовые_сервисы_помогут_голосовой_почте [2020/12/11 20:26]
val [Шаг 6. Добавляем голосовую почту в диалплан]
голосовые_сервисы_помогут_голосовой_почте [2026/06/22 14:42] (current)
val [Шаг 4. Разворачиваем Yandex SpeechKit]
Line 30: Line 30:
 ==== Система ==== ==== Система ====
  
-  * Linux [[http://​val.bmstu.ru/​unix/​img/​My%20Documents/​debian_10.0_64_01.ova|Debian 10]] в домашней сети+  * Linux [[https://​val.bmstu.ru/​unix/​img/​My%20Documents/​debian_10.11_64_01.ova|Debian 10]] в домашней сети
  
 ==== Настройка сети ==== ==== Настройка сети ====
Line 97: Line 97:
   * Используя тему "​[[Сервис Asterisk#​Запись звукового файла]]"​ записываем и прослушиваем сообщение   * Используя тему "​[[Сервис Asterisk#​Запись звукового файла]]"​ записываем и прослушиваем сообщение
  
-===== Шаг 4. Разворачиваем Yandex SpeechKit ​======+===== Шаг 4. ====== 
 + 
 +==== Разворачиваем Yandex SpeechKit ===
  
   * [[https://​cloud.yandex.ru/​docs/​free-trial/​concepts/​quickstart|Как воспользоваться пробным периодом]]   * [[https://​cloud.yandex.ru/​docs/​free-trial/​concepts/​quickstart|Как воспользоваться пробным периодом]]
   * [[https://​console.cloud.yandex.ru/​billing]]   * [[https://​console.cloud.yandex.ru/​billing]]
  
 +  * Установка ПО для [[Перекодировка звука#​Перекодировка в ogg формат]]
   * Используя [[Пакет sudo]] переключаемся на пользователя аsterisk   * Используя [[Пакет sudo]] переключаемся на пользователя аsterisk
-  * Инициализируем [[Yandex SpeechKit]] +  * [[Перекодировка звука#​Перекодировка в ogg формат]] ​записанного голосового сообщения 
-  * Тестируем распознавание подготовив звуковой файл ([[Перекодировка звука#​Перекодировка ​alaw в ogg формат]]+  * Инициализируем и тестируем распознавание [[Yandex SpeechKit]]
- +
-===== Шаг 5. Развертываем систему рассылки email ======+
  
-  * [[Организация рассылки электронной почты#​Утилита msmtp]]+==== Или Whisper ====
  
 <​code>​ <​code>​
-cat /​etc/​msmtprc +su - asterisk
-</​code><​code>​ +
-defaults +
-port 25 +
-tls off +
- +
-account default +
-host localhost +
-domain localhost +
-auth off +
-</​code><​code>​ +
-asterisk@server:​~$ cat mail.txt +
-</​code><​code>​ +
-Content-Type: text/plain; charset=UTF-8 +
-To: user1@corp13.un +
-From: Вячеслав Лохтуров<​user2@corp13.un>​ +
-Subject: Запись +
-cделана +
-</​code><​code>​ +
-asterisk@server:~$ cat mail.txt | msmtp -f user2@corp13.un user1@corp13.un+
 </​code>​ </​code>​
 +
 +  * [[Whisper]]
 +===== Шаг 5. Развертываем систему рассылки email ======
 +
 +  * [[UA mutt]]
  
 ===== Шаг 6. Добавляем голосовую почту в диалплан ====== ===== Шаг 6. Добавляем голосовую почту в диалплан ======
Line 146: Line 133:
 RECFILENAME=${DIR}$1 RECFILENAME=${DIR}$1
 MAILTO=$2 MAILTO=$2
-MAILFROM=${3:​-asterisk@server.corpX.un}+MAILFROM=${3%.empty}
 NUMFROM=$4 NUMFROM=$4
-NAMEFROM=$5+NAMEFROM=${5%.empty}
  
-NAMEFROM=`echo ​$NAMEFROM | iconv -f utf-8 -t koi-7 | tr '​[:​upper:​]' '​[:​lower:​]'​`+if [ -z "$MAILFROM" ​] 
 +then 
 +        MAILFROM=asterisk@server.corpX.un 
 +fi
  
 logger -t asterisk -p local0.info $@ logger -t asterisk -p local0.info $@
 #exit 0 #exit 0
- 
-FOLDER_ID=b1gg4j6ru4esprat3uu7 
-IAM_TOKEN=`/​var/​lib/​asterisk/​yandex-cloud/​bin/​yc iam create-token` 
  
 /​usr/​bin/​sox -t al -r 8000 -c 1 ${RECFILENAME}.alaw ${RECFILENAME}.wav /​usr/​bin/​sox -t al -r 8000 -c 1 ${RECFILENAME}.alaw ${RECFILENAME}.wav
Line 164: Line 151:
         -acodec libvorbis ${RECFILENAME}.ogg         -acodec libvorbis ${RECFILENAME}.ogg
  
-/bin/cat > ${RECFILENAME}.txt <<EOF +#​FOLDER_ID=b1gg4j6ru4esprat3uu7 
-Content-Typetext/plain; charset=UTF-8 +#​IAM_TOKEN=`/​var/​lib/​asterisk/​yandex-cloud/bin/yc iam create-token` 
-To: $MAILTO +#/​usr/​bin/​curl -s -X POST -H "​Authorization:​ Bearer ${IAM_TOKEN}"​ \ 
-From: $NAMEFROM <​$MAILFROM>​ +#        --data-binary "@${RECFILENAME}.ogg" \ 
-Subject: Voice message from ${NUMFROM+#        "https://​stt.api.cloud.yandex.net/​speech/​v1/​stt:​recognize?​folderId=${FOLDER_ID}"​ \ 
-EOF+#        | jq '​.result'​ | tr -d '"'​ > ${RECFILENAME}.txt 
 +         
 +source ~/​venv1/​bin/​activate 
 +cd $DIR 
 +~/​venv1/​bin/​whisper ​${FILENAME}.ogg --model base --device cpu --language ru >/​dev/​null 2>&1 
 +cd
  
-/​usr/​bin/​curl -s -X POST -H "Authorization:​ Bearer ​${IAM_TOKEN}" \ +export EMAIL="${NAMEFROM}<${MAILFROM}>
-        --data-binary "@${RECFILENAME}.ogg" ​\ +cat ${RECFILENAME}.txt mutt -"Голосовое сообщение от абонента ​${NUMFROM}" -a ${RECFILENAME}.ogg -- ${MAILTO}
-        "​https://​stt.api.cloud.yandex.net/​speech/​v1/​stt:​recognize?​folderId=${FOLDER_ID}" \ +
-        | jq '.result' ​tr -d '"' >> ​${RECFILENAME}.txt +
- +
-/​bin/​cat ​${RECFILENAME}.txt | msmtp -f ${MAILFROM} ​${MAILTO}+
  
 /bin/rm ${RECFILENAME}.* /bin/rm ${RECFILENAME}.*
Line 182: Line 170:
 exit 0 exit 0
 </​code><​code>​ </​code><​code>​
 +# chmod +x /​usr/​local/​bin/​mailsend.sh
 +
 +# su - asterisk
 +
 +$ wget https://​val.bmstu.ru/​unix/​Media/​speech.alaw -P /​usr/​share/​asterisk/​sounds/​recordings/​
 +
 +$ /​usr/​local/​bin/​mailsend.sh speech user3@corpX.un ''​ 401 ''​
 +
 # cat /​etc/​asterisk/​extensions.conf # cat /​etc/​asterisk/​extensions.conf
 </​code><​code>​ </​code><​code>​
 [default] [default]
 ... ...
-exten => _4XX,​1,​Dial(PJSIP/​${EXTEN},​10)+;exten => _4XX,​1,​Dial(PJSIP/​${EXTEN},​10) 
 +exten => _4XX,​1,​Dial(SIP/​${EXTEN},​10)
 ;exten => _4XX,​n,​Set(MY-CALLED-USER-ID=${PJSIP_ENDPOINT(${EXTEN},​MY-USER-ID)}) ;exten => _4XX,​n,​Set(MY-CALLED-USER-ID=${PJSIP_ENDPOINT(${EXTEN},​MY-USER-ID)})
-;exten => _4XX,1,​Set(MY-CALLED-USER-ID=${SIPPEER(${EXTEN},​chanvar[MY-USER-ID])})+exten => _4XX,n,​Set(MY-CALLED-USER-ID=${SIPPEER(${EXTEN},​chanvar[MY-USER-ID])})
 exten => _4XX,​n,​Goto(mailrec,​s,​1) exten => _4XX,​n,​Goto(mailrec,​s,​1)
 +
 +...
  
 [mailrec] [mailrec]
  
 exten => s,​1,​Playback(vm-intro) exten => s,​1,​Playback(vm-intro)
-exten => s,​n,​Record(recordings/​${UNIQUEID}.alaw,,,​xk)+exten => s,​n,​Record(recordings/​${UNIQUEID}.alaw,,​29,xk)
 exten => s,​n,​Hangup() exten => s,​n,​Hangup()
  
-exten => h,​1,​System(/​usr/​local/​bin/​mailsend.sh ${UNIQUEID} ${MY-CALLED-USER-ID} ​"${MY-USER-ID}" ​${CALLERID(num)} "​${CALLERID(name)}"​ &)+exten => h,​1,​System(/​usr/​local/​bin/​mailsend.sh ${UNIQUEID} ${MY-CALLED-USER-ID} ${MY-USER-ID}.empty ​${CALLERID(num)} "​${CALLERID(name)}.empty" &) 
 + 
 </​code>​ </​code>​
голосовые_сервисы_помогут_голосовой_почте.1607707611.txt.gz · Last modified: 2020/12/11 20:26 by val