SmartLiving.ru

Обсуждение проекта
 
Текущее время: Вт окт 17, 2017 2:20 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Сб июн 03, 2017 12:49 am 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 553
Благодарил (а): 87 раз.
Поблагодарили: 24 раз.
записываем звук:
[Показать] Скрытый текст:
$fn="/var/www/cached/rec/".time().".wav";
$cmd="arecord -d 10 -t wav -f cd ".$fn;

echo $cmd;
playsound("/var/www/sounds/ok.mp3");
shell_exec($cmd);
playsound("/var/www/sounds/ok.mp3");
echo "записан файл: ".$cmd;
playsound($fn);
runScript('speechyandexcurl', array('fn' =>$fn));


speechyandexcurl:
[Показать] Скрытый текст:
function generateRandomSelection($min, $max, $count)
{
$result=array();
if($min>$max) return $result;
$count=min(max($count,0),$max-$min+1);
while(count($result)<$count) {
$value=rand($min,$max-count($result));
foreach($result as $used) if($used<=$value) $value++; else break;
$result[]=dechex($value);
sort($result);
}
shuffle($result);
return $result;}

$key="c3aedb53-///fb";

$filename="@".$params['fn'];
if ($fn=="@"){$filename='@/var/www/cached/voice/8622cf4b70d9508f1910bdb77e74d5d8_ivona.mp3';}
//$filename='@/var/www/cached/voice/probki.wav';
//echo substr($filename,-5);

$ras=explode(".",substr($filename,-5));
if ($ras[1]=="wav"){$tip="audio/x-wav";}
else if ($ras[1]=="mp3"){$tip="audio/x-mpeg-3";}

$uuid=generateRandomSelection(0,30,64);
$uuid=implode($uuid);
$uuid=substr($uuid,1,32);



$url="curl -X POST -H \"Content-Type: ".$tip."\" --data-binary \"".$filename."\" \"https://asr.yandex.net/asr_xml?uuid=".$uuid."&key=".$key."&topic=queries\"";

//echo $url;
say('Пытаюсь распознать файл '.$filename,1);
$answ=shell_exec($url);
echo $answ;
say($answ,2);



Пока только штатными средствами отправляет файл и получает ответ. Ключ получать тут https://developer.tech.yandex.ru/

Проверено, работает на Orange Pi plus 2, но думаю должно работать и на любой linux liked системе при наличии микрофона. Пока это самое простое решение из имеющихся тут на форуме без установки каких-либо систем распознавания.


Осталось научиться слушать ключевую фразу. Видимо придется ставить PocketSphinx.
Или как вариант использовать sox http://tuksik.ru/voicecom/


Последний раз редактировалось directman66 Пн июн 05, 2017 8:57 am, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вс июн 04, 2017 11:47 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 553
Благодарил (а): 87 раз.
Поблагодарили: 24 раз.
Как вариант можно использовать cvoicecontrol

http://www.kiecza.net/daniel/linux/
https://wiki.ubuntu.com/cvoicecontrol

тут есть список приложений распознавания
https://en.wikipedia.org/wiki/Speech_re ... _for_Linux
https://en.wikipedia.org/wiki/List_of_s ... n_software
https://diyhacking.com/best-voice-recog ... pberry-pi/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 07, 2017 8:35 am 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 553
Благодарил (а): 87 раз.
Поблагодарили: 24 раз.
С кодом записи звука возникли заморочки непонятной причины.
[Показать] Скрытый текст:
$fn="/var/www/cached/rec/".time().".wav";
$cmd="arecord -d 10 -t wav -f cd ".$fn;

echo $cmd;
playsound("/var/www/sounds/ok.mp3");
shell_exec($cmd);
playsound("/var/www/sounds/ok.mp3");
echo "записан файл: ".$cmd;
playsound($fn);
runScript('speechyandexcurl', array('fn' =>$fn));



в образец записи звука попадает звуковая метка ok.mp3, т.е. происходит сильная задержка перед выполнением команды playsound("/var/www/sounds/ok.mp3"); Можно конечно задержки ввести, но мне бы хотелось наоборот ускорить выполнение playsound("/var/www/sounds/ok.mp3");

Система на armbian orange pi plus 2

зыж пока заменил командой shell_exec("mplayer ".$fn);


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 1:32 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс апр 09, 2017 2:36 pm
Сообщения: 156
Благодарил (а): 46 раз.
Поблагодарили: 3 раз.
directman66
спасибо за скрипты!
файл записывается и вроде как передается в яндекс, но в ответ получаю
Код:
Content-size limit reached

почему так?

_________________
Broadlink + Orange Pi PC ARMBIAN 5.31


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 1:37 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 553
Благодарил (а): 87 раз.
Поблагодарили: 24 раз.
а api-ключ получили? Прописали в скрипте? Фразы до 30 секунд у меня распрознаются на ура. Использую встроенный в orange pi микрофон. В настоящее время плату перенес в кладовку, думаю над выполнением этого скрипта через удаленные железяки.


Последний раз редактировалось directman66 Чт сен 21, 2017 1:39 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 1:38 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс апр 09, 2017 2:36 pm
Сообщения: 156
Благодарил (а): 46 раз.
Поблагодарили: 3 раз.
Да, сорри, читаю мануалы, это ошибка, если передается wav-файл более 1 Мб
Попробую записывать 5 секунд, а не 10.

_________________
Broadlink + Orange Pi PC ARMBIAN 5.31


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 1:46 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс апр 09, 2017 2:36 pm
Сообщения: 156
Благодарил (а): 46 раз.
Поблагодарили: 3 раз.
У меня микрофон выносной, так как внутренний не ловит в коробке ни фига :)
Присоединил камеру logitech c270, она с микрофоном и поддержкой убунту.
Чтобы прошла запись, пришлось \\etc\asound.conf менять на
[Показать] Скрытый текст:
Код:
pcm.dmixer { 
    type dmix 
    ipc_key 1024 
    slave 
{ 
        pcm 
"hw:0,0" 
        period_time 0 
        period_size 1024 
        buffer_size 8192 
   rate 44100 
    
} 
  
    bindings 
{ 
        0 0 
        1 1 
    
} 
} 

pcm
.asymed { 
        type asym 
        playback
.pcm "dmixer" 
        capture
.pcm "hw:0,0" 
} 


  
pcm
.dsp0 { 
    type plug 
    slave
.pcm "asymed" 
} 
  
pcm
.!default { 
        type plug 
        slave
.pcm "asymed" 
} 
  
pcm
.default { 
   type plug 
   slave
.pcm "asymed" 
} 
  
ctl
.mixer0 { 
    type hw 
    card 2 
}

Последнее card 2 по моей задумке должно означать, что выбираем карту 2, а не 0 :)

_________________
Broadlink + Orange Pi PC ARMBIAN 5.31


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 1:55 pm 
В сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 553
Благодарил (а): 87 раз.
Поблагодарили: 24 раз.
Как я рад, что данная тема пошла вверх, а то было ощущение, что только мне этот вариант интересен....работает ведь он-лайн распознавание нашего родного языка


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 2:09 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс апр 09, 2017 2:36 pm
Сообщения: 156
Благодарил (а): 46 раз.
Поблагодарили: 3 раз.
Так это же прекрасно, спасибо за тему :)
У меня стоял серверок Win7+Chrome+Плагин, я говорил Алиса, включи свет и она включала.
Теперь у меня апельсин и я этого лишён, а поднимать что-то еще на винде больше не хочется.

_________________
Broadlink + Orange Pi PC ARMBIAN 5.31


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт сен 21, 2017 2:44 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс апр 09, 2017 2:36 pm
Сообщения: 156
Благодарил (а): 46 раз.
Поблагодарили: 3 раз.
Интересно, а почему у меня результат дублируется пять раз?

_________________
Broadlink + Orange Pi PC ARMBIAN 5.31


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB