相关文章推荐
仗义的莲藕  ·  陈德宁 副教授·  1 年前    · 
千杯不醉的树叶  ·  浅谈python ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

SPXERR_GSTREAMER_NOT_FOUND_ERROR when using mp3 file with Microsoft.CognitiveServices.Speech

Ask Question

I have this piece of code throwing the wrror in the title:

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 is the path to mp3 file with audio to transcribe.

I have installed the latest GStreamer gstreamer-1.0-msvc-x86_64-1.17.2.msi for Windows and added it to the User's PATH and set GSTREAMER_ROOT_X86. That did not work.

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

Handling compressed audio is implemented using GStreamer. For licensing reasons GStreamer binaries are not compiled and linked with the Speech SDK. Developers need to install several dependencies and plugins, see Installing on Windows. Gstreamer binaries need to be in the system path, so that the speech SDK can load gstreamer binaries during runtime. If speech SDK is able to find libgstreamer-1.0-0.dll during runtime it means the gstreamer binaries are in the system path.

It says it will look for libgstreamer-1.0-0.dll which is no longer included in the latest version (1.17.2) so I went back to gstreamer-1.0-x86-1.14.1 which does have the required dll, but still getting the same error.

From Visual Studio 2019 console I can invoke exe files included in that folder so I know the PATH is set correctly.

Anyone has an idea what's missing?

the way i fixed this... (similar to Artur Kędzior)

use version 1.14.5 of Gstreamer https://gstreamer.freedesktop.org/pkg/windows/1.14.5/gstreamer-1.0-x86_64-1.14.5.msi - complete setup

use version 1.13 of Microsoft.CognitiveServices.Speech (Nuget package)

Go to environment variables on your pc and add to the User variable called path the following C:\gstreamer\1.0\x86_64\bin

then add a system variable called "GSTREAMER_ROOT_X86_64" (without the quotes) and the value to "C:\gstreamer\1.0\x86_64"

you may need to reboot if still having issues. but this is now working for me.

Got help with it here https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/764

Basically:

  • Do not use the latest version of Gstreamer
  • Use this one https://gstreamer.freedesktop.org/pkg/windows/1.14.5/gstreamer-1.0-x86_64-1.14.5.msi
  • Set PATH to bin folder (C:\gstreamer\1.0\x86_64\bin)
  • Set GSTREAMER_ROOT_X86_64 variable (C:\gstreamer\1.0\x86_64)
  • Reboot the machine
  • Set Visual Studio build configuration to x64
  • Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.