Как настроить клиент WCF, использующий wsDualHttpBinding в коде?

Ванильный способ сделать это - использовать созданный для него Web API: SpeechRecognition , который в настоящее время поддерживается только в Chrome, и я не знаю, почему, но не в iframes. в настоящее время сделать живой пример, к сожалению, невозможно ...

В любом случае, вот базовый пример, который вы можете использовать на своей странице.

const magic_word = ###Some magic word###;

// initialize our SpeechRecognition object
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'en-US';
recognition.interimResults = false;
recognition.maxAlternatives = 1;
recognition.continuous = true;

// when we get some results
recognition.onresult = e => {
    // extract all the transcripts
    const transcripts  = [].concat.apply([], [...e.results]
      .map(res => [...res]
        .map(alt => alt.transcript)
      )
    );

  // do something with the transcripts,
  // here we are searching for our magic word
  if(transcripts.some(t => t.indexOf(magic_word) > -1)){
    //do something awesome, like starting your own command listeners
    console.log('hello user');
    recognition.stop();
  }
  else{
    // didn't understood...
    console.log("didn't got what you said", transcripts)
  }
}
// start on click of a button
btn.onclick = e => {
  recognition.stop();
  recognition.start();
};

Чтобы понять, как это работает под капотом, вы можете проверить проект Mozilla с открытым исходным кодом DeepSpeech , основанный на исследовательских работ Baidu Deep Speech .

Итак, чтобы было ясно, это не javascript, а реализация Chrome все еще передается на их сервер. Если вы хотите что-то построить самостоятельно, будьте готовы провести долгие ночи; -)

8
задан Rob 30 January 2009 в 20:56
поделиться

1 ответ

Можно легко достигнуть того, что Вы хотите. См. код ниже:

 Uri baseAddress = new Uri("http://localhost/CommService");
 WSDualHttpBinding wsd = new WSDualHttpBinding();
 EndpointAddress ea = new EndpointAddress(baseAddress, EndpointIdentity.CreateDnsIdentity("localhost"));
 client  = new CommServiceClient(new InstanceContext(this), wsd, ea);

Позвольте мне объяснить немного:

  • сначала мы создаем экземпляр WSDualHttpBinding с настройками по умолчанию (это - точные, которые сгенерированный app.config имеет). Если Вы хотите изменить какую-либо из настроек, можно изменить их канавка выставленные свойства.
  • затем мы создаем EndPointAddress с желаемым URL и идентификационными данными th. Никакая потребность связать его с привязкой, потому что мы свяжем всех их в Сервисном Клиентском конструкторе.
  • наконец мы создаем Сервисный Клиент. Одна из перегрузок конструктора позволяет нам указывать Привязку и Адрес Конечной точки.
  • в целом каждый элемент, доступный в app.config файле, имеет связанный Класс в коде.NET и каждом атрибуте, или дочерний элемент имеет связанное Свойство в указанном классе.
9
ответ дан 5 December 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: