Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2018 13:58:52

turboone
Зарегистрирован: 2018-05-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Yandex Speech Recognition

Привет! Мучаюсь второй день, не могу сделать скрипт который будет отправлять аудиоданные потоком, используя Protocol Buffers. В док yandex сказано что нужно создать protobuf-сообщение и отправить через sockets. Я создал модель, но как теперь назначить ей данные и отправить ?

Вот мой главный файл

 import socket
import yandex_pb2
model = yandex_pb2.ConnectionRequest()
model.apiKey = "wefeww-wefwefwefwe-wefw-wef-we-fw-e"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('asr.yandex.net', 80))
header = ("GET /asr_partial HTTP/1.1\r\n"
                   "User-Agent: KeepAliveClient\r\n"
                   "Host: asr.yandex.net:80\r\n"
                   "Upgrade: dictation\r\n\r\n")
byte_head = header.encode()
s.send(byte_head)
message = model
message_size = hex(len(message))[2:].encode()
message_contoller = '\r\n'.encode()
message_request = message.encode()
s.send(message_size)
s.send(message_contoller)
s.send(message_request)
data = s.recv(1000000)
s.close()

Вот модель сообщения которую я потом превратил в класс yandex_pb2

 use 'syntax = "proto2"
message ConnectionRequest
{
  optional int32 protocolVersion = 1 [default = 1];
  
  required string speechkitVersion = 2;
            
  required string serviceName = 3;
            
  required string uuid = 4;
            
  required string apiKey = 5;
            
  required string applicationName = 6;
            
  required string device = 7;
            
  required string coords = 8;
            
  required string topic = 9;
            
  required string lang = 10;
            
  required string format =11;
  optional bool disableAntimatNormalizer = 18 [default = false];
  optional AdvancedASROptions advancedASROptions = 19;
            
 }
message AdvancedASROptions
{
  optional bool partial_results = 1 [default = true];
  optional string biometry = 24;
}

Офлайн

#2 Авг. 27, 2018 22:01:38

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 288
Репутация: +  11  -
Профиль   Отправить e-mail  

Yandex Speech Recognition

turboone
message_size = hex(len(message)).encode()
зачем?
turboone
data = s.recv(1000000)
wtf (у яндекса должен быть свой лими
turboone
Привет! Мучаюсь второй день, не могу сделать скрипт который будет отправлять аудиоданные потоком, используя Protocol Buffers. В док yandex сказано что нужно создать protobuf-сообщение и отправить через sockets. Я создал модель, но как теперь назначить ей данные и отправить ? Вот мой главный файл
LMAO, ты что творишь, зачем надо делать message = model?
turboone
use 'syntax = “proto2”
не думаю что квчк тут к месту



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Отредактировано DamMercul (Авг. 27, 2018 22:02:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version