<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/arbuzmaster/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя arbuzmaster]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 10 May 2026 09:09:34 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Управление мультимедиа центрами с помощью HTTP GET запросов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/388279/</guid>
      <link>https://habr.com/ru/articles/388279/?utm_campaign=388279&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В этой статье хотелось бы рассказать о том, как можно управлять на данный момент наиболее популярными мультимедиа центрами — KODI (XBMC) и Dune HD, с помощью HTTP GET запросов.<br/>
<br/>
Здесь будут описаны только самые наиболее востребованные запросы, которыми можно управлять удаленно (например: в пределах домашней WiFi сети или при соответствующих настройках роутера из сети INTERNET), не только с помощью заранее написанных скриптов, но и простым вводом их в адресную строку браузера. Все запросы описывать здесь я не буду, так как: во — первых, многие из них используются крайне редко, а во — вторых, для этого есть полная документация. Данные запросы можно использовать так же, для управления мультимедиа центрами, при построении систем «Умный Дом», чем я собственно говоря и воспользовался при разработке своей.<br/>
<br/>
Вот собственно те самые запросы:<br/>
<br/>
<i><b>1. </b></i><i>Запуск файла на воспроизведение.</i><br/>
<br/>
Ссылки на файлы должны быть прямыми, то есть явно указывать на воспроизводимый файл или поток, ссылки с Youtube таковыми не являются, поэтому работать не будут. Как получить прямую ссылку на ролик с Youtube можно посмотреть <a href="http://habrahabr.ru/post/270809/">здесь</a>.<br/>
<br/>
<ul>
<li> <i><b>1.1</b></i> KODI (XBMC) — http://<b>LOGIN</b>:<b>PASSWORD</b>@<b>ip-address</b>:8080/jsonrpc?request={«jsonrpc»:«2.0»,«id»:«1»,«method»:«Player.Open»,«params»:{«item»:{«file»:&quot;<b>URL</b>&quot;}}} </li>
<li> <i><b>1.2</b></i> Dune HD — http://<b>ip-address</b>/cgi-bin/do?cmd=launch_media_url&media_url=<b>URL</b></li>
</ul><br/>
 Здесь и далее по тексту:<br/>
<br/>
<b>LOGIN</b> — логин установленный в настройках KODI (Веб-сервер -&gt; Разрешить управление Kodi по HTTP).<br/>
<b>PASSWORD</b> — пароль установленный в настройках KODI (Веб-сервер -&gt; Разрешить управление Kodi по HTTP).<br/>
<b>URL</b> — сетевой или интернет адрес воспроизводимого ресурса.<br/>
<b>ip-address</b> — IP адрес устройства в домашней или INTERNET сети.<br/>
<br/>
Если настроить Dune HD так, что при нажатии кнопки POWER на пульте он уходит в режим Standby, то при запросе на воспроизведение файла он включится автоматически.<br/>
 <a href="https://habr.com/ru/articles/388279/?utm_campaign=388279&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 21 Dec 2015 07:19:39 GMT</pubDate>
      <dc:creator><![CDATA[arbuzmaster]]></dc:creator>
      <category><![CDATA[Видеотехника]]></category><category><![CDATA[Умный дом]]></category><category><![CDATA[Интернет вещей]]></category>
      <category><![CDATA[json-rpc]]></category><category><![CDATA[kodi]]></category><category><![CDATA[dune hd]]></category><category><![CDATA[smart home]]></category><category><![CDATA[ip control]]></category><category><![CDATA[xbmc]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Применение SpeechKit Cloud API для озвучивания погоды и новостей от Yandex]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/271081/</guid>
      <link>https://habr.com/ru/articles/271081/?utm_campaign=271081&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Добрый день! В данной статье хотелось бы рассказать о том, как можно сделать на сайте «Голосовой погодный и новостной информер», который бы, например при выборе города не только показывал, но и рассказывал фактический прогноз погоды, а так же произвольную новость. На самом деле этот скрипт разрабатывался для информирования в системе «Умный Дом», но может быть с легкостью переделан под любой сайт, имеющий на хостинге поддержку PHP, что и было сделано для этой статьи. В примере для синтеза речи, будет использоваться технология SpeechKit Cloud API от компании Yandex и XML парсер Yandex погоды и новостей, написанные на PHP.<br/>
<br/>
Что понадобится для реализации:<br/>
<ul>
<li>Web сервер с поддержкой PHP (можно локальный типа Денвера).</li>
<li>Ключ Yandex SpeechKit (для некоммерческих проектов можно получить бесплатно). </li>
<li>Если ключ не дают без наличия у Вас сайта, то создать сайт можно на Hostinger.ru. </li>
<li> <a href="https://pogoda.yandex.ru/static/cities.xml">Список ID городов.</a></li>
</ul><br/>
Данный материал предоставляется исключительно в ознакомительных целях, поэтому процесс установки на сайт и добавления городов, здесь рассматриваться не будет. <br/>
<br/>
Принцип работы:<br/>
<ul>
<li>Отправляем запрос на получение mp3 файла, для выбранного города.</li>
<li>Парсим XML файл, получая необходимые параметры. </li>
<li>Корректируем окончания слов, для постановки правильного произношения. </li>
<li>Устанавливаем параметры генерации mp3 файла (голос, тембр, формат файла, язык, текст). </li>
<li>Генерируем mp3 файл. </li>
<li>Создаем объект Audio HTML 5 и воспроизводим файл. </li>
</ul><br/>
<div class="spoiler"><b class="spoiler_title">Скрипт с формой для выбора городов index.html</b><div class="spoiler_text"><pre><code class="html">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ru&quot;&gt;
&lt;head&gt;
&lt;title&gt;Тест SpeechKit Cloud API от компании Yandex.&lt;/title&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function Get_Weather()
{
   var tts_text=document.getElementById('weather').value;
   console.log(tts_text);
	var response=&quot;weather.php?&q=&quot;+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById(&quot;gameMusic&quot;);
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement(&quot;audio&quot;);
		audio.setAttribute(&quot;id&quot;, &quot;gameMusic&quot;);
		audio.setAttribute(&quot;autoplay&quot;, &quot;true&quot;);
		//audio.setAttribute(&quot;loop&quot;, &quot;false&quot;);
	
		var mp3 = document.createElement(&quot;source&quot;);
		mp3.setAttribute(&quot;src&quot;, response);
		mp3.setAttribute(&quot;type&quot;, &quot;audio/mpeg&quot;);
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
function Get_News()
{
   var tts_text=document.getElementById('news').value;
   console.log(tts_text);
	var response=&quot;news.php?&q=&quot;+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById(&quot;gameMusic&quot;);
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement(&quot;audio&quot;);
		audio.setAttribute(&quot;id&quot;, &quot;gameMusic&quot;);
		audio.setAttribute(&quot;autoplay&quot;, &quot;true&quot;);
		//audio.setAttribute(&quot;loop&quot;, &quot;false&quot;);
	
		var mp3 = document.createElement(&quot;source&quot;);
		mp3.setAttribute(&quot;src&quot;, response);
		mp3.setAttribute(&quot;type&quot;, &quot;audio/mpeg&quot;);
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
&lt;/script&gt;
&lt;h1&gt;&lt;span&gt;Тест SpeechKit Cloud API от компании Yandex.&lt;/span&gt;&lt;/h1&gt;
&lt;h2&gt;Погода&lt;/h2&gt;
&lt;select size=&quot;1&quot; onclick=&quot;Get_Weather();&quot; id=&quot;weather&quot;&gt; 
			 &lt;option disabled&gt;Выберите город&lt;/option&gt; 
			 &lt;option value=&quot;27612&quot;&gt;Москва&lt;/option&gt; 
			 &lt;option value=&quot;34880&quot;&gt;Астрахань&lt;/option&gt;
			 &lt;option value=&quot;26063&quot;&gt;Санкт-Петербург&lt;/option&gt;
			 &lt;option value=&quot;25913&quot;&gt;Магадан&lt;/option&gt;
&lt;/select&gt;
&lt;h2&gt;Новости&lt;/h2&gt;
&lt;select size=&quot;1&quot; onclick=&quot;Get_News();&quot; id=&quot;news&quot;&gt; 
			 &lt;option disabled&gt;Выберите город&lt;/option&gt; 
			 &lt;option selected value=&quot;Astrakhan&quot;&gt;Астрахань&lt;/option&gt; 
				&lt;option  value=&quot;Volgograd&quot;&gt;Волгоград&lt;/option&gt;
				&lt;option  value=&quot;Krasnodar&quot;&gt;Краснодар&lt;/option&gt;				
				&lt;option  value=&quot;Moscow&quot;&gt;Москва&lt;/option&gt;
				&lt;option  value=&quot;Saratov&quot;&gt;Саратов&lt;/option&gt;
&lt;/select&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre><br/>
</div></div><br/>
Горда можно добавлять путём установки новых параметров <b>option</b> в элементе <b>select</b>.<br/>
<br/>
<div class="spoiler"><b class="spoiler_title">Скрипт генерации mp3 файла для погоды weather.php</b><div class="spoiler_text"><pre><code class="php">&lt;?php
	 $id=$_GET[&quot;q&quot;]; // id города
	 $url=&quot;http://export.yandex.ru/weather-ng/forecasts/&quot;.$id.&quot;.xml&quot;; // url xml файла 
    $xml = simplexml_load_file($url); // интерпретируем XML-файл в объект
    //параметры:
    $city=$xml['city']; //город
    $temp=$xml-&gt;fact-&gt;temperature; // температура
    $weather_type=$xml-&gt;fact-&gt;weather_type; // тип погоды
    $humidity=$xml-&gt;fact-&gt;humidity; // влажность
    $wind_direction=$xml-&gt;fact-&gt;wind_direction; // направление ветра
    $wind_speed=$xml-&gt;fact-&gt;wind_speed; // скорость ветра
    $pressure=$xml-&gt;fact-&gt;pressure; // давление
       
   
	$znak=&quot;плюс&quot;;
	if($wind_direction==&quot;e&quot;) {	$wind_direction_text=&quot;восточный&quot;;}
	if($wind_direction==&quot;w&quot;) {	$wind_direction_text=&quot;западный&quot;;}
	if($wind_direction==&quot;s&quot;) {	$wind_direction_text=&quot;южный&quot;;}
	if($wind_direction==&quot;n&quot;) {	$wind_direction_text=&quot;северный&quot;;}
	if($wind_direction==&quot;se&quot;) {	$wind_direction_text=&quot;юго-восточный&quot;;}
	if($wind_direction==&quot;ne&quot;) {	$wind_direction_text=&quot;северо-восточный&quot;;} 
	if($wind_direction==&quot;sw&quot;) {	$wind_direction_text=&quot;юго-западный&quot;;}
	if($wind_direction==&quot;nw&quot;) {	$wind_direction_text=&quot;северо-западный&quot;;} 
												
	$minus_arry=preg_match(&quot;/(-)/&quot;, $temp, $minus_out);
	if (!empty($minus_out[1]))
	{ $znak=&quot;минус&quot;;
		$temp=str_replace(&quot;-&quot;,&quot;&quot;,$temp);
	}
							
	 //градус
  	if(	$temp==&quot;1&quot; or $temp==&quot;21&quot; or $temp==&quot;31&quot; or $temp==&quot;41&quot; or $temp==&quot;51&quot; or $temp==&quot;61&quot; or $temp==&quot;71&quot; or $temp==&quot;81&quot; or $temp==&quot;91&quot; or $temp==&quot;101&quot;) 
  	{
  			$text=&quot;градус&quot;;
  	} 
  	else 
  	{
	//градуса	
  	if(   $temp==&quot;2&quot;  or $temp==&quot;3&quot;  or $temp==&quot;4&quot;
  			or $temp==&quot;22&quot; or $temp==&quot;23&quot; or $temp==&quot;24&quot; 
  			or $temp==&quot;32&quot; or $temp==&quot;33&quot; or $temp==&quot;34&quot; 
  			or $temp==&quot;42&quot; or $temp==&quot;43&quot; or $temp==&quot;44&quot; 
  			or $temp==&quot;52&quot; or $temp==&quot;53&quot; or $temp==&quot;54&quot;
  			or $temp==&quot;62&quot; or $temp==&quot;63&quot; or $temp==&quot;64&quot; 
  			or $temp==&quot;72&quot; or $temp==&quot;73&quot; or $temp==&quot;74&quot; 
  			or $temp==&quot;82&quot; or $temp==&quot;83&quot;	or $temp==&quot;84&quot; 
  			or $temp==&quot;92&quot; or $temp==&quot;93&quot; or $temp==&quot;94&quot;
  			or $temp==&quot;102&quot; or $temp==&quot;103&quot;
  		) {$text=&quot;градуса&quot;;} else {$text=&quot;градусов&quot;;}  											
  						
  	}
  									
  									
  									
  	//процент
  			
  	if(	$humidity==&quot;1&quot; or $humidity==&quot;21&quot; or $humidity==&quot;31&quot; or $humidity==&quot;41&quot; or $humidity==&quot;51&quot; or $humidity==&quot;61&quot; or $humidity==&quot;71&quot; or $humidity==&quot;81&quot; or $humidity==&quot;91&quot; or $humidity==&quot;101&quot;) 
  	{
  		$humidity_text=&quot;процент&quot;;
  	} 
  	else 
  	{
		//процента	
  		if(   $humidity==&quot;2&quot;  or $humidity==&quot;3&quot;  or $humidity==&quot;4&quot;
  				or $humidity==&quot;22&quot; or $humidity==&quot;23&quot; or $humidity==&quot;24&quot; 
  				or $humidity==&quot;32&quot; or $humidity==&quot;33&quot; or $humidity==&quot;34&quot; 
  				or $humidity==&quot;42&quot; or $humidity==&quot;43&quot; or $humidity==&quot;44&quot; 
  				or $humidity==&quot;52&quot; or $humidity==&quot;53&quot; or $humidity==&quot;54&quot;
  				or $humidity==&quot;62&quot; or $humidity==&quot;63&quot; or $humidity==&quot;64&quot; 
  				or $humidity==&quot;72&quot; or $humidity==&quot;73&quot; or $humidity==&quot;74&quot; 
  				or $humidity==&quot;82&quot; or $humidity==&quot;83&quot; or $humidity==&quot;84&quot; 
  				or $humidity==&quot;92&quot; or $humidity==&quot;93&quot; or $humidity==&quot;94&quot;
  				or $humidity==&quot;102&quot; or $humidity==&quot;103&quot;
  		) {$humidity_text=&quot;процента&quot;;} else {$humidity_text=&quot;процентов&quot;;}  											
  								
  	}	
  									
  									
  	 //миллиметр
  	if(	$pressure==&quot;701&quot; or $pressure==&quot;721&quot; or $pressure==&quot;731&quot; or $pressure==&quot;741&quot; or $pressure==&quot;751&quot; or $pressure==&quot;761&quot; or $pressure==&quot;771&quot; or $pressure==&quot;781&quot; or $pressure==&quot;791&quot; or $pressure==&quot;801&quot;) 
  	{
  		$pressure_text=&quot;милиметр ртутного столба&quot;;
  	} 
  	else 
  	{
		//миллиметра	
  		if(   $pressure==&quot;702&quot; or $pressure==&quot;703&quot; or $pressure==&quot;704&quot;
  				or $pressure==&quot;722&quot; or $pressure==&quot;723&quot; or $pressure==&quot;724&quot; 
  				or $pressure==&quot;732&quot; or $pressure==&quot;733&quot; or $pressure==&quot;734&quot; 
  				or $pressure==&quot;742&quot; or $pressure==&quot;743&quot; or $pressure==&quot;744&quot; 
  				or $pressure==&quot;752&quot; or $pressure==&quot;753&quot; or $pressure==&quot;754&quot;
  				or $pressure==&quot;762&quot; or $pressure==&quot;763&quot; or $pressure==&quot;764&quot; 
  				or $pressure==&quot;772&quot; or $pressure==&quot;773&quot; or $pressure==&quot;774&quot; 
  				or $pressure==&quot;782&quot; or $pressure==&quot;783&quot; or $pressure==&quot;784&quot; 
  				or $pressure==&quot;792&quot; or $pressure==&quot;793&quot; or $pressure==&quot;794&quot;
  				or $pressure==&quot;802&quot; or $pressure==&quot;803&quot;
  			) {$pressure_text=&quot;милиметра ртутного столба&quot;;} else {$pressure_text=&quot;милиметров ртутного столба&quot;;}  											
  							
  	}
  	$say_text=&quot;Сейчас в городе &quot;.$city.&quot; &quot;.$weather_type.&quot;. Tемпература воздуха &quot;.$znak.&quot; &quot;.$temp.&quot; &quot;.$text.&quot;. Влажность &quot;.$humidity.&quot; &quot;.$humidity_text.&quot;. Ветер &quot;.$wind_direction_text.&quot; &quot;.$wind_speed.&quot; метров в секунду. Атмосферное давление &quot;.$pressure.&quot; &quot;.$pressure_text.&quot; !&quot;;
	$qs = http_build_query(array(&quot;format&quot; =&gt; &quot;mp3&quot;,&quot;lang&quot; =&gt; &quot;ru-RU&quot;,&quot;speaker&quot; =&gt; &quot;jane&quot;,&quot;key&quot; =&gt; &quot;SpeechKit_Cloud_API_Key&quot;,&quot;emotion&quot; =&gt; &quot;good&quot;, &quot;text&quot; =&gt; $say_text)); // параметры запроса
	$ctx = stream_context_create(array(&quot;http&quot;=&gt;array(&quot;method&quot;=&gt;&quot;GET&quot;,&quot;header&quot;=&gt;&quot;Referer: \r\n&quot;)));
	$soundfile = file_get_contents(&quot;https://tts.voicetech.yandex.net/generate?&quot;.$qs, false, $ctx); // запрос на генерацию mp3 файла
 	echo($soundfile);
?&gt;
</code></pre><br/>
</div></div><br/>
В скрипте нужно изменить <b>SpeechKit_Cloud_API_Key</b> на полученный Вами ключ.<br/>
<div class="spoiler"><b class="spoiler_title">Скрипт генерации mp3 файла для новостей news.php</b><div class="spoiler_text"><pre><code class="php">&lt;?php
$city=$_GET['q'];
	 
$data_file=&quot;http://news.yandex.ru/&quot;.$city.&quot;/index.rss&quot;; // адрес xml файла 
$xml = simplexml_load_file($data_file); // раскладываем xml на массив

$number= rand(1,13); //генерируем порядковый номер новости

$news=$xml-&gt;channel-&gt;item[$number]-&gt;description; //новость
$title=$xml-&gt;channel-&gt;item[$number]-&gt;title; //заголовок
    

$content_news = trim(preg_replace('/\s{2,}/', ' ', $news));//удаляем весь хлам
$content_title = trim(preg_replace('/\s{2,}/', ' ', $title));//удаляем весь хлам

$text=$content_title.&quot; - &quot;.$content_news;
$search = array('&quot;','&quot;','&nbsp;',')','(');
$replace   = array('');

$text = str_replace($search, $replace, $text);
$qs = http_build_query(array(&quot;format&quot; =&gt; &quot;mp3&quot;,&quot;lang&quot; =&gt; &quot;ru-RU&quot;,&quot;speaker&quot; =&gt; &quot;jane&quot;,&quot;key&quot; =&gt; &quot;SpeechKit_Cloud_API_Key&quot;,&quot;emotion&quot; =&gt; &quot;good&quot;, &quot;text&quot; =&gt; $text)); // параметры запроса
$ctx = stream_context_create(array(&quot;http&quot;=&gt;array(&quot;method&quot;=&gt;&quot;GET&quot;,&quot;header&quot;=&gt;&quot;Referer: \r\n&quot;)));
$soundfile = file_get_contents(&quot;https://tts.voicetech.yandex.net/generate?&quot;.$qs, false, $ctx); // запрос на генерацию mp3 файла
echo($soundfile);    
?&gt;
</code></pre><br/>
</div></div><br/>
 <a href="https://habr.com/ru/articles/271081/?utm_campaign=271081&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 19 Nov 2015 19:55:46 GMT</pubDate>
      <dc:creator><![CDATA[arbuzmaster]]></dc:creator>
      <category><![CDATA[PHP]]></category><category><![CDATA[Веб-разработка]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Яндекс API]]></category>
      <category><![CDATA[голосовой]]></category><category><![CDATA[информер]]></category><category><![CDATA[погода]]></category><category><![CDATA[yandex]]></category><category><![CDATA[api]]></category><category><![CDATA[новости]]></category><category><![CDATA[синтез речи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Голосовое управление мультимедиа центром]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/270809/</guid>
      <link>https://habr.com/ru/articles/270809/?utm_campaign=270809&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В этой статье хотелось бы описать свой опыт по применению web speech api в браузере Google Chrome для реализации голосового поиска и автоматического воспроизведения видеороликов с канала Youtube. Для демонстрации данного функционала нам понадобиться сделать следующие шаги:<br/>
<br/>
<ol>
<li>Установить набор: Apache2, PHP5(пакет curl обязательно).</li>
<li>Иметь в наличии мультимедиа центр Dune HD или установить XBMC и настроить его для работы в сети INTERNET.</li>
<li>Получить Youtube API Key для выполнения поисковых запросов.</li>
</ol><br/>
Как сделать все вышеперечисленное, здесь описывать не буду, так как на эти темы полно статей. Принцип реализации такой:<br/>
<br/>
<ol>
<li>Распознаем фразу с помощью скрипта, написанного на JavaScript — <b>работать будет только в Google Chrome</b>.</li>
<li>Ищем ролики, соответствующие поисковому запросу.</li>
<li>Получаем прямые ссылки на ролики.</li>
<li>Создаем плейлист из ссылок и названий роликов.</li>
<li>Отправляем плейлист для воспроизведения на устройство.</li>
</ol> <a href="https://habr.com/ru/articles/270809/?utm_campaign=270809&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 13 Nov 2015 10:34:22 GMT</pubDate>
      <dc:creator><![CDATA[arbuzmaster]]></dc:creator>
      <category><![CDATA[Google API]]></category><category><![CDATA[Google Chrome]]></category><category><![CDATA[PHP]]></category>
      <category><![CDATA[распознавание речи]]></category><category><![CDATA[голосовое управление]]></category><category><![CDATA[мультимедиа-устройства]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
