Project Oxford и распознавание речи — «Эта сборка была скомпилирована для другого процессора»

#azure-functions

#azure-функции

Вопрос:

Я добавил следующий файл project.json в свою функцию Azure.

 {
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.SpeechRecognition-x86": "1.0.0.1"
      }
    }
   }
}
  

Я использую простой Http-триггер и в функции есть следующий код:

 using System.Net;
using Microsoft.CognitiveServices.SpeechRecognition;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) {
log.Info($"C# HTTP trigger function processed a request.");

        var dataClient = SpeechRecognitionServiceFactory.CreateDataClient(
                    SpeechRecognitionMode.LongDictation,
                    "en-US",
                    "my sub key");

        var resp = new HttpResponseMessage(HttpStatusCode.OK);
        return resp;
}
  

На данный момент я просто пытаюсь создать экземпляр DataClient. Функция компилируется нормально, но при ее выполнении выдает эту ошибку.

Функции.ProcessReportAudio. mscorlib: исключение было вызвано целью вызова. mscorlib: не удалось загрузить файл или сборку ‘SpeechClient, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null’. Эта сборка была скомпилирована для другого процессора.

Я пробовал как x86, так и x64 версии пакета nuget и получаю ту же ошибку.

В конечном счете, я буду обрабатывать речевые файлы wav, которые были загружены в хранилище Azure, чтобы получить диктовку, но сейчас это как бы мертво в воде.

Ответ №1:

Джефф, я предполагаю, что вы начали с x64 (поскольку конфигурация приложения по умолчанию — x86).

После перехода с одной архитектуры на другую вы перезапустили свое функциональное приложение?

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