Как запустить Microsoft.CognitiveServices.Speech в Windows Server 2012 R2 - PullRequest
0 голосов
/ 15 мая 2018

Мне нужно преобразовать речь из файла WAV в текст.Поэтому я скачал пример проекта кода C # из Quickstart: распознавание речи с помощью речевого сервиса C # SDK и следовал инструкциям на странице.

Он работает в Windows 10, но мне нужнопроект для работы на Windows Servers 2012 R2, и он не работает на Windows Servers 2012 R2.

Когда я запускаю его на Windows Servers 2012 R2, я нажимаю клавишу 3 для 3.Распознавание речи с возможностью ввода файла .Но когда он пытается выполнить следующий код (с действительными значениями подписки и региона)

var factory = SpeechFactory.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

Выдается следующее исключение:

Произошло исключение System.TypeInitializationException HResult = 0x80131534 Сообщение =Инициализатор типа для «Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE» вызвал исключение.Source = Microsoft.CognitiveServices.Speech.csharp StackTrace: в Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE.SpeechFactory_FromSubscription (Строка jarg1, Строка jarg2) в Microsoft.CognitiveService.SigningSignFringSigning.Spection.FringMicrosoft.CognitiveServices.Speech.SpeechFactory.FromSubscription (String subscriptionKey, String region) в MicrosoftSpeechSDKSamples.SpeechRecognitionSamples.d__2.MoveNext () в C: \ temp \ csharp_samples \ speech_recognition_samples.cs: 1016 1017 *1017* 10161018 * Внутреннее исключение 1: TypeInitializationException: инициализатор типа для SWIGExceptionHelper вызвал исключение.

Внутреннее исключение 2: DllNotFoundException: Невозможно загрузить DLL. Microsoft.CognitiveServices.Speech.csharp.bindings.dll ': указанный модуль не найден.(Исключение из HRESULT: 0x8007007E)

Я думаю, что Microsoft.CognitiveServices.Speech.csharp.bindings.dll не нравится работать на Windows Server 2012 R2, так как он существует в папке bin (ине пропущен) и работает в Windows 10. Я написал следующий код в небольшом консольном проекте Hello World, и он вызвал то же исключение, работающее в Windows Server 2012 R2.

class Program
{
    [DllImport("Microsoft.CognitiveServices.Speech.csharp.bindings.dll", CharSet = CharSet.None, EntryPoint = "CSharp_MicrosoftfCognitiveServicesfSpeechfInternal_TRANSLATION_LANGUAGE_RESOURCE_SCOPE_SPEECH_get___", ExactSpelling = false)]
    public static extern int TRANSLATION_LANGUAGE_RESOURCE_SCOPE_SPEECH_get();

    static void Main(string[] args)
    {
        int test = TRANSLATION_LANGUAGE_RESOURCE_SCOPE_SPEECH_get();
        Console.WriteLine($"API value: {test}");
    }
}

И я попробовалработает в качестве администратора на случай, если это будет разрешением.Но это ничего не сделало.

Может кто-нибудь помочь мне \ показать, что мне нужно сделать, чтобы запустить образец службы речи на Windows Server 2012 R2?

Ответы [ 4 ]

0 голосов
/ 02 ноября 2018

Проверьте настройки платформы для вашего проекта в Build> Configuration Manager.Должно быть установлено значение x64 или x86, а не AnyCpu.

0 голосов
/ 29 мая 2018

В настоящее время SDK сильно зависит от Windows Media Foundation.Есть ли на вашем сервере следующие dll: Ksuser.dll, Mf.dll, Mfcore.dll, Mfplat.dll, Mfreadwrite.dll?

0 голосов
/ 19 июля 2018

Эта проблема возникла в .NET Framework 4.7.1, однако она не выдает исключение и работает в .NET Core 2.0

.

Получил эту ошибку в .NET при выполнении следующей строки

var recognizer = factory.CreateSpeechRecognizer();

{"Инициализатор типа для 'Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE' бросил исключение. "}

Точно такой же код в .NET Core 2.0 создает фабрику. Также удостоверился, что установил последние распространяемые Visual C ++ для 2017

0 голосов
/ 15 мая 2018

Установка последней распространяемой Microsoft Visual C ++ для Visual Studio 2017 должна исправить это, см. https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads.

(мы обновим документы как можно скорее)

...