initial commit, 4.5 stable
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled

This commit is contained in:
2025-09-16 20:46:46 -04:00
commit 9d30169a8d
13378 changed files with 7050105 additions and 0 deletions

View File

@@ -0,0 +1,248 @@
/*
* libspeechd.h - Shared library for easy acces to Speech Dispatcher functions (header)
*
* Copyright (C) 2001, 2002, 2003, 2004 Brailcom, o.p.s.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this package; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* $Id: libspeechd.h,v 1.29 2008-07-30 09:47:00 hanke Exp $
*/
#ifndef _LIBSPEECHD_H
#define _LIBSPEECHD_H
#include <stdio.h>
#include <stddef.h>
#include <pthread.h>
#include "libspeechd_version.h"
#include "speechd_types.h"
/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
#endif
/* *INDENT-ON* */
/* Speech Dispatcher's default port for inet communication */
#define SPEECHD_DEFAULT_PORT 6560
/* Arguments for spd_send_data() */
#define SPD_WAIT_REPLY 1 /* Wait for reply */
#define SPD_NO_REPLY 0 /* No reply requested */
/* --------------------- Public data types ------------------------ */
typedef enum {
SPD_MODE_SINGLE = 0,
SPD_MODE_THREADED = 1
} SPDConnectionMode;
typedef enum {
SPD_METHOD_UNIX_SOCKET = 0,
SPD_METHOD_INET_SOCKET = 1,
} SPDConnectionMethod;
typedef struct {
SPDConnectionMethod method;
char *unix_socket_name;
char *inet_socket_host;
int inet_socket_port;
char *dbus_bus;
} SPDConnectionAddress;
void SPDConnectionAddress__free(SPDConnectionAddress * address);
typedef void (*SPDCallback) (size_t msg_id, size_t client_id,
SPDNotificationType state);
typedef void (*SPDCallbackIM) (size_t msg_id, size_t client_id,
SPDNotificationType state, char *index_mark);
typedef struct {
/* PUBLIC */
SPDCallback callback_begin;
SPDCallback callback_end;
SPDCallback callback_cancel;
SPDCallback callback_pause;
SPDCallback callback_resume;
SPDCallbackIM callback_im;
/* PRIVATE */
int socket;
FILE *stream;
SPDConnectionMode mode;
pthread_mutex_t *ssip_mutex;
pthread_t *events_thread;
pthread_mutex_t *comm_mutex;
pthread_cond_t *cond_reply_ready;
pthread_mutex_t *mutex_reply_ready;
pthread_cond_t *cond_reply_ack;
pthread_mutex_t *mutex_reply_ack;
char *reply;
} SPDConnection;
/* -------------- Public functions --------------------------*/
/* Opening and closing Speech Dispatcher connection */
SPDConnectionAddress *spd_get_default_address(char **error);
SPDConnection *spd_open(const char *client_name, const char *connection_name,
const char *user_name, SPDConnectionMode mode);
SPDConnection *spd_open2(const char *client_name, const char *connection_name,
const char *user_name, SPDConnectionMode mode,
SPDConnectionAddress * address, int autospawn,
char **error_result);
void spd_close(SPDConnection * connection);
/* Speaking */
int spd_say(SPDConnection * connection, SPDPriority priority, const char *text);
int spd_sayf(SPDConnection * connection, SPDPriority priority,
const char *format, ...);
/* Speech flow */
int spd_stop(SPDConnection * connection);
int spd_stop_all(SPDConnection * connection);
int spd_stop_uid(SPDConnection * connection, int target_uid);
int spd_cancel(SPDConnection * connection);
int spd_cancel_all(SPDConnection * connection);
int spd_cancel_uid(SPDConnection * connection, int target_uid);
int spd_pause(SPDConnection * connection);
int spd_pause_all(SPDConnection * connection);
int spd_pause_uid(SPDConnection * connection, int target_uid);
int spd_resume(SPDConnection * connection);
int spd_resume_all(SPDConnection * connection);
int spd_resume_uid(SPDConnection * connection, int target_uid);
/* Characters and keys */
int spd_key(SPDConnection * connection, SPDPriority priority,
const char *key_name);
int spd_char(SPDConnection * connection, SPDPriority priority,
const char *character);
int spd_wchar(SPDConnection * connection, SPDPriority priority,
wchar_t wcharacter);
/* Sound icons */
int spd_sound_icon(SPDConnection * connection, SPDPriority priority,
const char *icon_name);
/* Setting parameters */
int spd_set_voice_type(SPDConnection *, SPDVoiceType type);
int spd_set_voice_type_all(SPDConnection *, SPDVoiceType type);
int spd_set_voice_type_uid(SPDConnection *, SPDVoiceType type,
unsigned int uid);
SPDVoiceType spd_get_voice_type(SPDConnection *);
int spd_set_synthesis_voice(SPDConnection *, const char *voice_name);
int spd_set_synthesis_voice_all(SPDConnection *, const char *voice_name);
int spd_set_synthesis_voice_uid(SPDConnection *, const char *voice_name,
unsigned int uid);
int spd_set_data_mode(SPDConnection * connection, SPDDataMode mode);
int spd_set_notification_on(SPDConnection * connection,
SPDNotification notification);
int spd_set_notification_off(SPDConnection * connection,
SPDNotification notification);
int spd_set_notification(SPDConnection * connection,
SPDNotification notification, const char *state);
int spd_set_voice_rate(SPDConnection * connection, signed int rate);
int spd_set_voice_rate_all(SPDConnection * connection, signed int rate);
int spd_set_voice_rate_uid(SPDConnection * connection, signed int rate,
unsigned int uid);
int spd_get_voice_rate(SPDConnection * connection);
int spd_set_voice_pitch(SPDConnection * connection, signed int pitch);
int spd_set_voice_pitch_all(SPDConnection * connection, signed int pitch);
int spd_set_voice_pitch_uid(SPDConnection * connection, signed int pitch,
unsigned int uid);
int spd_get_voice_pitch(SPDConnection * connection);
int spd_set_volume(SPDConnection * connection, signed int volume);
int spd_set_volume_all(SPDConnection * connection, signed int volume);
int spd_set_volume_uid(SPDConnection * connection, signed int volume,
unsigned int uid);
int spd_get_volume(SPDConnection * connection);
int spd_set_punctuation(SPDConnection * connection, SPDPunctuation type);
int spd_set_punctuation_all(SPDConnection * connection, SPDPunctuation type);
int spd_set_punctuation_uid(SPDConnection * connection, SPDPunctuation type,
unsigned int uid);
int spd_set_capital_letters(SPDConnection * connection, SPDCapitalLetters type);
int spd_set_capital_letters_all(SPDConnection * connection,
SPDCapitalLetters type);
int spd_set_capital_letters_uid(SPDConnection * connection,
SPDCapitalLetters type, unsigned int uid);
int spd_set_spelling(SPDConnection * connection, SPDSpelling type);
int spd_set_spelling_all(SPDConnection * connection, SPDSpelling type);
int spd_set_spelling_uid(SPDConnection * connection, SPDSpelling type,
unsigned int uid);
int spd_set_language(SPDConnection * connection, const char *language);
int spd_set_language_all(SPDConnection * connection, const char *language);
int spd_set_language_uid(SPDConnection * connection, const char *language,
unsigned int uid);
char *spd_get_language(SPDConnection * connection);
int spd_set_output_module(SPDConnection * connection,
const char *output_module);
int spd_set_output_module_all(SPDConnection * connection,
const char *output_module);
int spd_set_output_module_uid(SPDConnection * connection,
const char *output_module, unsigned int uid);
int spd_get_client_list(SPDConnection * connection, char **client_names,
int *client_ids, int *active);
int spd_get_message_list_fd(SPDConnection * connection, int target,
int *msg_ids, char **client_names);
char **spd_list_modules(SPDConnection * connection);
void free_spd_modules(char **);
char *spd_get_output_module(SPDConnection * connection);
char **spd_list_voices(SPDConnection * connection);
SPDVoice **spd_list_synthesis_voices(SPDConnection * connection);
void free_spd_voices(SPDVoice ** voices);
char **spd_execute_command_with_list_reply(SPDConnection * connection,
char *command);
/* Direct SSIP communication */
int spd_execute_command(SPDConnection * connection, char *command);
int spd_execute_command_with_reply(SPDConnection * connection, char *command,
char **reply);
int spd_execute_command_wo_mutex(SPDConnection * connection, char *command);
char *spd_send_data(SPDConnection * connection, const char *message, int wfr);
char *spd_send_data_wo_mutex(SPDConnection * connection, const char *message,
int wfr);
/* *INDENT-OFF* */
#ifdef __cplusplus
}
#endif /* __cplusplus */
/* *INDENT-ON* */
#endif /* ifndef _LIBSPEECHD_H */

View File

@@ -0,0 +1,31 @@
/*
* libspeechd_version.h - Shared library for easy access to Speech Dispatcher functions (header)
*
* Copyright (C) 2001, 2002, 2003, 2004 Brailcom, o.p.s.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this package; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* $Id: libspeechd.h,v 1.29 2008-07-30 09:47:00 hanke Exp $
*/
#ifndef _LIBSPEECHD_VERSION_H
#define _LIBSPEECHD_VERSION_H
#define LIBSPEECHD_MAJOR_VERSION 0
#define LIBSPEECHD_MINOR_VERSION 8
#define LIBSPEECHD_MICRO_VERSION 8
#endif /* ifndef _LIBSPEECHD_VERSION_H */

View File

@@ -0,0 +1,75 @@
/*
* spd_audio_plugin.h -- The SPD Audio Plugin Header
*
* Copyright (C) 2004 Brailcom, o.p.s.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1, or (at your option) any later
* version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this package; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*
*/
#ifndef __SPD_AUDIO_PLUGIN_H
#define __SPD_AUDIO_PLUGIN_H
#define SPD_AUDIO_PLUGIN_ENTRY_STR "spd_audio_plugin_get"
/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
#endif
/* *INDENT-ON* */
typedef enum { SPD_AUDIO_LE, SPD_AUDIO_BE } AudioFormat;
typedef struct {
int bits;
int num_channels;
int sample_rate;
int num_samples;
signed short *samples;
} AudioTrack;
struct spd_audio_plugin;
typedef struct {
int volume;
AudioFormat format;
struct spd_audio_plugin const *function;
void *private_data;
int working;
} AudioID;
typedef struct spd_audio_plugin {
const char *name;
AudioID *(*open) (void **pars);
int (*play) (AudioID * id, AudioTrack track);
int (*stop) (AudioID * id);
int (*close) (AudioID * id);
int (*set_volume) (AudioID * id, int);
void (*set_loglevel) (int level);
char const *(*get_playcmd) (void);
} spd_audio_plugin_t;
/* *INDENT-OFF* */
#ifdef __cplusplus
}
#endif /* __cplusplus */
/* *INDENT-ON* */
#endif /* ifndef #__SPD_AUDIO_PLUGIN_H */

View File

@@ -0,0 +1,34 @@
/*
* speechd_defines.h - macros for Speech Dispatcher
*
* Copyright (C) 2015 Brailcom, o.p.s.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this package; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef SPEECHD_DEFINES_H
#define SPEECHD_DEFINES_H
#define SPD_ALLCLIENTS "ALL"
#define SPD_SELF "SELF"
#define SPD_VOLUME "VOLUME"
#define SPD_PITCH "PITCH"
#define SPD_RATE "RATE"
#define SPD_LANGUAGE "LANGUAGE"
#define SPD_OUTPUT_MODULE "OUTPUT_MODULE"
#define SPD_SYNTHESIS_VOICE "SYNTHESIS_VOICE"
#endif /* not ifndef SPEECHD_DEFINES_H */

View File

@@ -0,0 +1,119 @@
/*
* speechd_types.h - types for Speech Dispatcher
*
* Copyright (C) 2001, 2002, 2003 Brailcom, o.p.s.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this package; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef SPEECHD_TYPES_H
#define SPEECHD_TYPES_H
typedef enum {
SPD_PUNCT_ALL = 0,
SPD_PUNCT_NONE = 1,
SPD_PUNCT_SOME = 2
} SPDPunctuation;
typedef enum {
SPD_CAP_NONE = 0,
SPD_CAP_SPELL = 1,
SPD_CAP_ICON = 2
} SPDCapitalLetters;
typedef enum {
SPD_SPELL_OFF = 0,
SPD_SPELL_ON = 1
} SPDSpelling;
typedef enum {
SPD_MALE1 = 1,
SPD_MALE2 = 2,
SPD_MALE3 = 3,
SPD_FEMALE1 = 4,
SPD_FEMALE2 = 5,
SPD_FEMALE3 = 6,
SPD_CHILD_MALE = 7,
SPD_CHILD_FEMALE = 8
} SPDVoiceType;
typedef struct {
char *name; /* Name of the voice (id) */
char *language; /* 2-letter ISO language code */
char *variant; /* a not-well defined string describing dialect etc. */
} SPDVoice;
typedef enum {
SPD_DATA_TEXT = 0,
SPD_DATA_SSML = 1
} SPDDataMode;
typedef enum {
SPD_IMPORTANT = 1,
SPD_MESSAGE = 2,
SPD_TEXT = 3,
SPD_NOTIFICATION = 4,
SPD_PROGRESS = 5
} SPDPriority;
typedef enum {
SPD_BEGIN = 1,
SPD_END = 2,
SPD_INDEX_MARKS = 4,
SPD_CANCEL = 8,
SPD_PAUSE = 16,
SPD_RESUME = 32,
SPD_ALL = 0x3f
} SPDNotification;
typedef enum {
SPD_EVENT_BEGIN,
SPD_EVENT_END,
SPD_EVENT_INDEX_MARK,
SPD_EVENT_CANCEL,
SPD_EVENT_PAUSE,
SPD_EVENT_RESUME
} SPDNotificationType;
typedef enum {
SORT_BY_TIME = 0,
SORT_BY_ALPHABET = 1
} ESort;
typedef enum {
SPD_MSGTYPE_TEXT = 0,
SPD_MSGTYPE_SOUND_ICON = 1,
SPD_MSGTYPE_CHAR = 2,
SPD_MSGTYPE_KEY = 3,
SPD_MSGTYPE_SPELL = 99
} SPDMessageType;
typedef struct {
signed int rate;
signed int pitch;
signed int volume;
SPDPunctuation punctuation_mode;
SPDSpelling spelling_mode;
SPDCapitalLetters cap_let_recogn;
SPDVoiceType voice_type;
SPDVoice voice;
} SPDMsgSettings;
#endif /* not ifndef SPEECHD_TYPES */