Speech2Text Service
A D-Bus service that provides speech-to-text functionality for the GNOME Shell Speech2Text extension.
Overview
This service handles the actual speech recognition processing using OpenAI's Whisper model locally. It runs as a D-Bus service and communicates with the GNOME Shell extension to provide seamless speech-to-text functionality.
Features
- Real-time speech recognition using OpenAI Whisper
- D-Bus integration for seamless desktop integration
- Audio recording with configurable duration
- Multiple output modes (clipboard, text insertion, preview)
- Error handling and recovery
- Session management for multiple concurrent recordings
Installation
System Dependencies
This service requires several system packages to be installed (e.g. ffmpeg, clipboard tools). See the main README.md for the complete list of system dependencies.
Service Installation
The service is available on PyPI and is typically installed into a per-user virtual environment by the extension’s installer.
pip install speech2text-extension-service
PyPI Package: speech2text-extension-service
Or from the source repository:
cd service/
pip install .
D-Bus Registration
After installation, you need to register the D-Bus service and desktop entry. Recommended options:
- Using the repository (local source install)
# From the repo root
./service/install-service.sh --local
- Using the bundled installer (PyPI install)
# From the repo root
./service/install-service.sh --pypi
The installer will:
- Create a per-user virtual environment under
~/.local/share/speech2text-extension-service/venv - Install the
speech2text-extension-servicepackage - Register the D-Bus service at
~/.local/share/dbus-1/services/org.gnome.Shell.Extensions.Speech2Text.service - Create a desktop entry at
~/.local/share/applications/speech2text-extension-service.desktop
Usage
Starting the Service
The service is D-Bus activated and starts automatically when requested by the extension. You can also start it manually:
# If the entry point is on PATH (pip install)
speech2text-extension-service
# Or via the per-user wrapper created by the installer
~/.local/share/speech2text-extension-service/speech2text-extension-service
Configuration
The service uses OpenAI's Whisper model locally for speech recognition. No API key is required. All processing happens on your local machine for complete privacy.
D-Bus Interface
The service provides the following D-Bus interface (stable; used by the GNOME extension):
Methods:
StartRecording(duration, copy_to_clipboard, preview_mode)→recording_idStopRecording(recording_id)→successCancelRecording(recording_id)→successTypeText(text, copy_to_clipboard)→successGetServiceStatus()→statusCheckDependencies()→all_available, missing_dependencies[]
Signals:
RecordingStarted(recording_id)RecordingStopped(recording_id, reason)TranscriptionReady(recording_id, text)RecordingError(recording_id, error_message)TextTyped(text, success)
Requirements
- Python: 3.8–3.13 (Python 3.14+ not supported yet)
- System: Linux with D-Bus support
- Desktop: GNOME Shell (tested on GNOME 46+)
License
This project is licensed under the GPL-3.0-or-later license. See the LICENSE file for details.
Contributing
Contributions are welcome! Please see the main repository for contribution guidelines: https://github.com/kavehtehrani/speech2text-extension
Metadata
Release files for speech2text-extension-service 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| speech2text_extension_service-1.2.0.tar.gz | 25.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| speech2text_extension_service-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.8 kB
Release files / speech2text_extension_service-1.2.0.tar.gz
| Download URL | speech2text_extension_service-1.2.0.tar.gz |
|---|---|
| Size | 25.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3471a057c22f90c5723a9a27d31747d51d926d36c6d35471b92a9578c1df4b18
|
|
BLAKE2b-256 checksum How to use checksums |
9488006901bdf82e9cd2e0959d6b5fb3c2f5c726bd2a63d005b3e24792b9da03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|
Release files / speech2text_extension_service-1.2.0-py3-none-any.whl
| Download URL | speech2text_extension_service-1.2.0-py3-none-any.whl |
|---|---|
| Size | 24.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4d73f2eac90784176186425c4f0a641e935143c2515adb47d88d93ef3aa14fd
|
|
BLAKE2b-256 checksum How to use checksums |
4310894ba4b61b4ca5278e31001d7759e1d62e5af65ab2597f5b1831b433f94c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|