我需要将语音从wav文件转换为文本。所以我从Quickstart: Recognize speech using Speech service C# SDK页面下载了示例C#代码项目,并按照页面上的说明进行操作。
它适用于Windows 10,但我需要该项目才能在Windows Server 2012 R2上运行,并且它无法在Windows Server 2012 R2上运行。
当我在Windows Servers 2012 R2上运行它时,按3键 3。带文件输入的语音识别选项。但是当它尝试执行以下代码(具有有效的订阅和区域值)时
var factory = SpeechFactory.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
抛出以下异常:
发生了System.TypeInitializationException 的HResult = 0x80131534 Message =' Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE'的类型初始值设定项。抛出一个例外。 来源= Microsoft.CognitiveServices.Speech.csharp 堆栈跟踪: 在Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE.SpeechFactory_FromSubscription(String jarg1,String jarg2) 在Microsoft.CognitiveServices.Speech.Internal.SpeechFactory.FromSubscription(String subscription,String region) 在Microsoft.CognitiveServices.Speech.SpeechFactory.FromSubscription(String subscriptionKey,String region) 在C:\ temp \ csharp_samples \ speech_recognition_samples.cs中的MicrosoftSpeechSDKSamples.SpeechRecognitionSamples.d__2.MoveNext():第86行
内部例外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上运行语音服务示例需要做些什么?
答案 0 :(得分:1)
在“构建”>“配置管理器”中检查项目的平台设置。
必须将其设置为x64或x86,而不是AnyCpu。
答案 1 :(得分:0)
为Visual Studio 2017安装最新的Microsoft Visual C ++ Redistributable应该修复它,请参阅https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads。
(我们会尽快更新文档)
答案 2 :(得分:0)
目前,SDK对Windows Media Foundation有很强的依赖性。你的服务器镜像上是否有以下dll:Ksuser.dll,Mf.dll,Mfcore.dll,Mfplat.dll,Mfreadwrite.dll?
答案 3 :(得分:0)
.NET Framework 4.7.1遇到了此问题,但是它不会引发异常,并且可以在.NET Core 2.0中工作
执行以下行时,.NET中出现此错误
var recognizer = factory.CreateSpeechRecognizer();
{“用于 'Microsoft.CognitiveServices.Speech.Internal.carbon_csharpPINVOKE' 引发异常。“}
.NET Core 2.0中完全相同的代码创建了工厂。还确保安装了2017年最新的Visual C ++可再发行组件