与Microsoft.CognitiveServices.Speech一起使用mp3文件时,出现SPXERR_GSTREAMER_NOT_FOUND_ERROR

问题描述

我有这段代码标题加上错误

using (var audioInput = AudioConfig.FromStreamInput(new PullAudioInputStream(new BinaryAudioStreamReader(new BinaryReader(File.OpenRead(audioFile))),AudioStreamFormat.GetCompressedFormat(AudioStreamContainerFormat.MP3))))
using (var recognizer = new SpeechRecognizer(config,sourceLanguageConfig,audioInput))

audioFile是带有要转录音频的mp3文件的路径。

我已经为Windows安装了最新的GStreamer gstreamer-1.0-msvc-x86_64-1.17.2.msi ,并将其添加用户的PATH中,并设置了 GSTREAMER_ROOT_X86 。那没用。

在此处https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-use-codec-compressed-audio-input-streams?tabs=debian&pivots=programming-language-csharp

的文档中

使用GStreamer实现压缩音频的处理。对于 许可原因GStreamer二进制文件未编译和链接 语音SDK。开发人员需要安装几个依赖项,并且 插件,请参阅在Windows上安装。 Gstreamer二进制文件需要存在 系统路径,以便语音SDK可以加载gstreamer二进制文件 在运行时。如果语音SDK能够找到libgstreamer-1.0-0.dll 在运行时,这意味着gstreamer二进制文件在系统路径中。

它说它将查找 libgstreamer-1.0-0.dll ,该版本不再包含在最新版本(1.17.2)中,所以我回到了 gstreamer-1.0-x86 -1.14.1 确实具有必需的dll,但仍然出现相同的错误

从Visual Studio 2019控制台中,我可以调用文件夹中包含的exe文件,因此我知道PATH设置正确。

有人知道什么不见了吗?

解决方法

我解决这个问题的方式......(类似于 Artur Kędzior)

使用 1.14.5 版 Gstreamer https://gstreamer.freedesktop.org/pkg/windows/1.14.5/gstreamer-1.0-x86_64-1.14.5.msi - 完成设置

使用 Microsoft.CognitiveServices.Speech 1.13 版(Nuget 包)

转到您电脑上的环境变量并将以下 C:\gstreamer\1.0\x86_64\bin 添加到名为 path 的用户变量中

然后添加一个名为“GSTREAMER_ROOT_X86_64”的系统变量(不带引号)并将值添加到“C:\gstreamer\1.0\x86_64”

如果仍有问题,您可能需要重新启动。但这现在对我有用。

,

https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/764

对此提供了帮助

基本上:

  1. 请勿使用最新版本的Gstreamer
  2. 使用这个https://gstreamer.freedesktop.org/pkg/windows/1.14.5/gstreamer-1.0-x86_64-1.14.5.msi
  3. PATH 设置为bin文件夹(C:\ gstreamer \ 1.0 \ x86_64 \ bin)
  4. 设置 GSTREAMER_ROOT_X86_64 变量(C:\ gstreamer \ 1.0 \ x86_64)
  5. 重新启动计算机
  6. 将Visual Studio构建配置设置为 x64