(name . Luis Felipe via Bug reports for GNU Guix)(address . bug-guix@gnu.org)
I can add `ibus-speech-to-text` (aka IBus STT) to my input methods, and set it up, but once selected for input, it doesn't work.
## STEPS TO REPRODUCE
1. `guix install ibus ibus-speech-to-text`
2. In GNOME Settings → Keyboard, add IBus STT to the list of input methods (it is displayed as `Other (Speech To Text)`)
3. In IBus STT Settings → General:
+ Preload models: ON
+ Active on start: ON
+ System locale: OFF
+ Locales: Select the lightweight model for English (USA)
4. In the desktop, start an app and place the text cursor in a text field (tried on IceCat, Ungoogled Chromium, GNOME Text Editor, GNOME Shell)
5. Switch to IBus STT input method using Super+Space (give it about 1 second to load).
6. Dictate to the machine.
## EXPECTED RESULT
Text is typed magically as you speak in the text field selected in step 4.
## UNEXPECTED RESULT
No text is added to the text field I selected in step 4.
## SYSTEM INFORMATION
~~~
OS: Guix System x86_64 fb3085e
Kernel: 6.1.5-gnu
DE: GNOME 42.4 (tried on Wayland and Xorg)
ibus: 1.5.27
ibus-speech-to-text: 0.4.0
~~~
## ADDITIONAL INFORMATION
Could it be that the speech-to-text engine is failing to run because it can't find the GTK 4.0 namespace through Gobject Introspection. For example, after being pointed to the following command by IBus STT developer (https://github.com/PhilippeRo/IBus-Speech-To-Text/discussions/7)I see the following error:
~~~
$ /gnu/store/HASH-ibus-speech-to-text-0.4.0/libexec/ibus-engine-stt --gapplication-replace -g
Traceback (most recent call last):
File "/gnu/store/87dgkps8sp1jb4z2w4m1dnp0zvnq050l-ibus-speech-to-text-0.4.0/share/ibus-stt/main.py", line 38, in <module>
from sttenginefactory import STTEngineFactory
File "/gnu/store/87dgkps8sp1jb4z2w4m1dnp0zvnq050l-ibus-speech-to-text-0.4.0/share/ibus-stt/sttenginefactory.py", line 26, in <module>
from sttengine import STTEngine
File "/gnu/store/87dgkps8sp1jb4z2w4m1dnp0zvnq050l-ibus-speech-to-text-0.4.0/share/ibus-stt/sttengine.py", line 29, in <module>
gi.require_version('Gtk', '4.0')
File "/gnu/store/5ijhwr127smgxrp5dls7dxnr9jwa4m8p-python-pygobject-3.40.1/lib/python3.9/site-packages/gi/__init__.py", line 129, in require_version
raise ValueError('Namespace %s not available for version %s' %
ValueError: Namespace Gtk not available for version 4.0
~~~
In the command above, HASH is the hash corresponding to `ibus-speech-to-text-0.4.0` in my user profile.
## WORKAROUND
The input method works after making sure `gtk` and `python-pygobject` are in the environment where `ibus-engine-stt` is run:
1. Start an augmented shell:
guix shell ibus-speech-to-text gtk python-pygobject
2. Run `ibus-engine-stt` as follows (where HASH is the hash for ibus-speech-to-text-0.4.0 in the profile created for the shell in step one):
/gnu/store/HASH-ibus-speech-to-text-0.4.0/libexec/ibus-engine-stt --gapplication-replace -g
After this, you should see INFO and DEBUG information printed out. You can now launch an application, place the caret in any text box, switch to speech-to-text input method, and start dictating to the machine. Selecting other languages in "IBus STT settings → General → Locale" also work (I tried dictating in English, Japanese and Spanish).
---
Luis Felipe López Acevedo