jabber-tools / cognitive-services-speech-sdk-rs

Apache License 2.0
24 stars 15 forks source link

Raspberry pi 4 support possible? #1

Closed some-vec-byte closed 3 years ago

some-vec-byte commented 3 years ago

Hey, Is there a possibility that there will be support for the raspberry pi 4?

adambezecny commented 3 years ago

hi,

in theory it should work (as Raspberry Pi is Linux system). I just gave it a quick try on my Raspberry Pi 3b. The first difference is in prereqs:

sudo apt-get update 
sudo apt-get install clang build-essential libssl1.0.2 libasound2 wget
sudo apt-get install libclang1-3.9

i.e. different version of libssl lib + I had to install libclang1-3.9

Then I tried to compile and got this error:

pi@raspberrypi:~/cognitive-services-speech-sdk-rs $ cargo build
   Compiling cognitive-services-speech-sdk-rs v0.1.2 (/home/pi/cognitive-services-speech-sdk-rs)
error[E0308]: mismatched types
   --> src/audio/pull_audio_input_stream.rs:191:25
    |
191 |                         value as *mut i8,
    |                         ^^^^^^^^^^^^^^^^ expected `u8`, found `i8`
    |
    = note: expected raw pointer `*mut u8`
               found raw pointer `*mut i8`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
error: could not compile `cognitive-services-speech-sdk-rs`

To learn more, run the command again with --verbose.
pi@raspberrypi:~/cognitive-services-speech-sdk-rs $ ^C

All it took to compile was really to change the line https://github.com/jabber-tools/cognitive-services-speech-sdk-rs/blob/main/src/audio/pull_audio_input_stream.rs#L191

I changed i8 to u8. No comments on that yet, I need to investigate more why this is needed. Anyway then it compiled.

When I try to compile the examples though, it fails (not during compilation but during linking) :

pi@raspberrypi:~/cognitive-services-speech-sdk-rs $ cargo run --example recognizer
   Compiling cognitive-services-speech-sdk-rs v0.1.2 (/home/pi/cognitive-services-speech-sdk-rs)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-L" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.0.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.1.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.10.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.11.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.12.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.13.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.14.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.15.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.2.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.3.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.4.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.5.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.6.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.7.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.8.rcgu.o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.recognizer.5bkkhskd-cgu.9.rcgu.o" "-o" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/examples/recognizer-4f3b5c58e8f96487.r0ueaxrm11irf6g.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps" "-L" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/build/cognitive-services-speech-sdk-rs-1194593321c53af6/out/SpeechSDK/linux/lib/x64" "-L" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib" "-Wl,-Bstatic" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libenv_logger-beb2484e44a15bb5.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libatty-6379ac8f780e365c.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libtermcolor-a305625d34e35270.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libhumantime-7e978838208ce956.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libregex-32c5482bb00e1c70.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libregex_syntax-4f1a25c1a9a2163a.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libaho_corasick-995d1499d505f3e3.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libcognitive_services_speech_sdk_rs-3653471aedb81b13.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libtokio-392ebbbf898672dc.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libsignal_hook_registry-d36a526090fe44ee.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libnum_cpus-134da4bdb3e11751.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libmemchr-196babfb663d0582.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libonce_cell-a213c076f00811ee.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libbytes-fc1a83c319c049b5.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libmio-4880ac575d448f3d.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libpin_project_lite-b91e8539804b0703.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libparking_lot-b76cdab12ea71e6f.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libparking_lot_core-22da37e3c86ef3fc.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/liblibc-3bf16083963a3615.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libsmallvec-dc5df693e963ab44.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/liblock_api-c34d421b07472ca8.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libscopeguard-87a7faa7f6125051.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libinstant-b7a0ec56d72f1a12.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/liblog-3d1d491ac4d350ef.rlib" "/home/pi/cognitive-services-speech-sdk-rs/target/debug/deps/libcfg_if-bb6f2256888cea0c.rlib" "-Wl,--start-group" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libstd-85737748b88fdb0c.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libpanic_unwind-5f30322e02cdba81.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libminiz_oxide-66e6453c2c9f3133.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libadler-89ef23770d36ddae.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libobject-f370ec13ab09536f.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libaddr2line-6025682b9782653b.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libgimli-4c4d80e5d0e6d364.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/librustc_demangle-12d79adf0a84df87.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libhashbrown-2be7398cd27b971e.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/librustc_std_workspace_alloc-14eb01f327f4faf1.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libunwind-0ecf14c724bd27c7.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libcfg_if-85d17447bbfdc6e3.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/liblibc-c098ab12ade5141a.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/liballoc-5e9abecb59bcebc8.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/librustc_std_workspace_core-8a8905ab7c778227.rlib" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libcore-c6377c18ec6480a5.rlib" "-Wl,--end-group" "/home/pi/.rustup/toolchains/stable-armv7-unknown-linux-gnueabihf/lib/rustlib/armv7-unknown-linux-gnueabihf/lib/libcompiler_builtins-253133ce567fc061.rlib" "-Wl,-Bdynamic" "-lMicrosoft.CognitiveServices.Speech.core" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc"
  = note: /home/pi/cognitive-services-speech-sdk-rs/target/debug/build/cognitive-services-speech-sdk-rs-1194593321c53af6/out/SpeechSDK/linux/lib/x64/libMicrosoft.CognitiveServices.Speech.core.so: file not recognized: File format not recognized
          collect2: error: ld returned 1 exit status

error: aborting due to previous error

error: could not compile `cognitive-services-speech-sdk-rs`

To learn more, run the command again with --verbose.
pi@raspberrypi:~/cognitive-services-speech-sdk-rs $

It seems there is some issue with linking MS speech libraries (libMicrosoft.CognitiveServices.Speech.core.so), for now I did not undertake any further investigation. Do you feel like helping with this? I think the issue is this shared library is simply not indented for ARM, not sure whether MS Speech SDK libraries are available for ARM, this must be checked.

adambezecny commented 3 years ago

based on this it does not relally see ARM is supported: https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-sdk?tabs=windows%2Cubuntu%2Cios-xcode%2Cmac-xcode%2Candroid-studio

adambezecny commented 3 years ago

closing as ARM is not supported by underlying Speech SDK hence we cannot really support it.