Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Raspberry Pi
  3. Распознавание Речи.

Распознавание Речи.

Запланировано Прикреплена Закрыта Перенесена Raspberry Pi
5 Сообщения 1 Posters 116 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано
    #1

    Планирую делать , так называемый "умный" дом.

    Отличная статья связанная с распознаванием речи размещена на сайте - http://raspberrypi.ru/readblog/155/.

    Как заставить ПИ понять меня, и выполнить команду я понял.

    не понял, как же заставить ПИ по определенному моему звуку, начать распознавать текст?

    У автора, я так понял, это делается с помощью адруины,как только автор произносит "Артур", срабатывает событие "старт записи"..

    а обойтись только ПИ возможно?

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано
      #2

      Пока наколдовал так:

      -- coding: utf-8 --

      import urllib2
      import json
      import os
      from time import gmtime, strftime

      def speechtotext():
      os.system( "arecord -q -d 4 -D hw:1,0 -f S16_LE -c 1 -r 16000 /home/pi/pyri/sounds/record.wav"
      os.system( "ffmpeg -loglevel 0 -v 0 -i /home/pi/pyri/sounds/output.wav -ab 192k -y '/home/pi/pyri/sounds/output.flac' ")

      FileNameTmp    = ('/home/pi/pyri/sounds/output.flac')
      url = "https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium〈=ru-RU"
      flac=open(FileNameTmp,"rb").read()
      header = {'Content-Type' : 'audio/x-flac; rate=16000'}
      req = urllib2.Request(url, flac, header)
      data = urllib2.urlopen(req)
      t=data.read()
      #print t.decode('utf-8')
      txt=t.decode('utf-8')
      for i in json.loads(txt)['hypotheses']:
      	k = i.keys()
      	#print i['utterance']
      	#for j in k:
      	#print  i[j]
      	speechtext=i['utterance']
      return speechtext
      

      def fetchHTML(url):
      req = urllib2.Request(url)
      response=urllib2.urlopen(req)
      return response.read()

      def answer():
      answer=""
      if speechtext.encode('utf8')=="сколько время":
      #print ("Точное время "strftime("%H") + " часов " + strftime("%M") + " минут")
      answer=("Точное время " + strftime("%H") + " часов " + strftime("%M") + " минут")

      if speechtext.encode('utf8')=="какая будет погода":
      	output=fetchHTML("http://openweathermap.org/data/2.1/weather/city/%s" % 524901)
      	output1=fetchHTML("http://api.openweathermap.org/data/2.1/forecast/city?%s" % 524901)
      	temp_now = round(json.loads(output)['main']['temp'] - 273.15)
      	weather_now = json.loads(output)['weather'][0]['main']
      	temp_fut = round(json.loads(output1)['list'][9]['main']['temp'] - 273.15)
      	weather_fut = json.loads(output1)['list'][9]['weather'][0]['main']
      
      	answer= ("Погода сейчас: " + str(temp_now) + " градусов " + weather_now.encode('utf8') + " Прогноз: " + str(temp_fut) + " градусов " + weather_fut.encode('utf8'))
      
      if speechtext.encode('utf8')=="какие новости":
      	passw=""""""  #Сюда вставляем ключ с датамаркет азуры
      	url="""https://api.datamarket.azure.com/Bing/Search/News?$format=json&Query=''&Market='ru-RU'&NewsSortBy='relevance'"""
      	password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
      	password_manager.add_password(None, url, 'rampage', passw)
      	handler = urllib2.HTTPBasicAuthHandler(password_manager)
      	opener = urllib2.build_opener(handler)
      	urllib2.install_opener(opener)
      	readURL = urllib2.urlopen(url).read()
      	news1=json.loads(readURL)['d']['results'][0]['Title']
      	news2=json.loads(readURL)['d']['results'][1]['Title']
      	news3=json.loads(readURL)['d']['results'][2]['Title']
      	news4=json.loads(readURL)['d']['results'][3]['Title']
      	answer = (news1 + ". " + news2 + ". " + news3 + ". " + news4 +".")
      
      
      	
      return answer
      

      speechtext=speechtotext()
      answer=answer()
      print ("Вы сказали: " + speechtext.encode('utf8'))
      print ("Ответ: " + answer)

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #3

        оно по запуску скрипта стартует запись.. 4 секунды.. конвертит во флак - отправляет в гуглю, и по результату уже выводит время, погоду/прогноз, либо новости..(это в дальнейшем в текст ту спич запилю...

        пока у меня главный вопрос.. как бы мне автоматицки стартвоать запись по произношению "кодового" слова...

        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #4

          шикарная реализация ! а я вот недавно находил проги по распознованию речи, для Linux, вот я что думаю, там все пишут что они убогие и работают из рук вот плохо но всеже вам ведь нужно чтобы она реагировала только на 1 команду и запускала Ваш скрипт, я думаю это реализовать реально!

          утилиту зовут Julius я думаю без труда в интернете найдете её описание

          1 ответ Последний ответ
          0
          • piP Не в сети
            piP Не в сети
            pi
            написал в отредактировано
            #5

            А можно просто в конце той программы(http://raspberrypi.ru/readblog/155/) добавить открытие самой себя, в программе вписать две команды:
            робот - открывает другую, но схожую программу со списком команд для робота;
            стоп - завершение программы не позволяя открыться новой

            1 ответ Последний ответ
            0

            • Войти

            • Нет учётной записи? Зарегистрироваться

            • Login or register to search.
            • Первое сообщение
              Последнее сообщение
            0
            • Категории
            • Главная
            • Документация
            • Последние
            • Пользователи