Makefile
utils/Makefile
src/Makefile
- src/plugins/native-client-interface/srs-native.pc
+ src/plugins/client-api/native/srs-native-client.pc
])
AC_OUTPUT
QUIET_GEN = $(Q:@=@echo ' GEN '$@;)
# SRS daemon
-srs_daemon_PUBLIC_SYMBOLS = \
- daemon/context.h \
- daemon/audiobuf.h \
- daemon/recognizer.h \
- daemon/plugin.h
+daemon_includedir = $(includedir)/srs/daemon
+daemon_include_HEADERS = \
+ daemon/client-api-types.h \
+ daemon/voice-api-types.h
srs_daemon_SOURCES = \
daemon/daemon.c \
-rdynamic
if DBUS_ENABLED
-# SRS command line test client
-bin_PROGRAMS += srs-client
+# D-Bus client API plugin
+plugin_LTLIBRARIES += plugin-dbus-client.la
+
+plugin_dbus_client_la_SOURCES = \
+ plugins/client-api/dbus/dbus-client.c
+
+plugin_dbus_client_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(MURPHY_DBUS_CFLAGS)
-srs_client_SOURCES = \
- client/client.c
+plugin_dbus_client_la_LDFLAGS = \
+ -module -avoid-version
+
+plugin_dbus_client_la_LIBADD = \
+ $(MURPHY_DBUS_LIBS)
+
+# D-Bus client API command line test client
+bin_PROGRAMS += srs-dbus-client
-srs_client_CFLAGS = \
+srs_dbus_client_SOURCES = \
+ plugins/client-api/dbus/test-client.c
+
+srs_dbus_client_CFLAGS = \
$(AM_CFLAGS) \
$(MURPHY_PULSE_CFLAGS) \
$(MURPHY_DBUS_CFLAGS) \
$(MURPHY_COMMON_CFLAGS) \
$(DBUS_CFLAGS)
-srs_client_LDADD = \
+srs_dbus_client_LDADD = \
$(MURPHY_PULSE_LIBS) \
$(MURPHY_DBUS_LIBS) \
$(MURPHY_BREEDLINE_LIBS) \
endif
-if DBUS_ENABLED
-# D-Bus client interface plugin
-plugin_LTLIBRARIES += plugin-dbus-client.la
-
-plugin_dbus_client_la_SOURCES = \
- plugins/dbus-client-interface/dbus-client.c
-
-plugin_dbus_client_la_CFLAGS = \
- $(AM_CFLAGS) \
- $(DBUS_CFLAGS) \
- $(MURPHY_DBUS_CFLAGS)
-
-plugin_dbus_client_la_LDFLAGS = \
- -module -avoid-version
-
-plugin_dbus_client_la_LIBADD = \
- $(MURPHY_DBUS_LIBS)
-endif
-
-# Native client interface plugin
+# native client API plugin
plugin_LTLIBRARIES += plugin-native-client.la
plugin_native_client_la_SOURCES = \
- plugins/native-client-interface/native-server.c \
- plugins/native-client-interface/native-messages.c
+ plugins/client-api/native/native-server.c \
+ plugins/client-api/native/native-messages.c
plugin_native_client_la_CFLAGS = \
$(AM_CFLAGS) \
plugin_native_client_la_LIBADD = \
$(MURPHY_COMMON_LIBS)
-# Native client library
-lib_LTLIBRARIES += libsrs-native.la
-EXTRA_DIST += plugins/native-client-interface/srs-native.pc
-pkgconfig_DATA += plugins/native-client-interface/srs-native.pc
+# native client API library
+lib_LTLIBRARIES += libsrs-native-client.la
+EXTRA_DIST += plugins/client-api/native/srs-native-client.pc
+pkgconfig_DATA += plugins/client-api/native/srs-native-client.pc
-libsrs_native_ladir = $(includedir)/srs
-libsrs_native_la_HEADERS = \
- plugins/native-client-interface/native-client.h \
- plugins/native-client-interface/native-config.h \
- plugins/native-client-interface/native-messages.h
+libsrs_native_client_ladir = $(includedir)/srs/client-api/native
+libsrs_native_client_la_HEADERS = \
+ plugins/client-api/native/native-client.h \
+ plugins/client-api/native/native-config.h \
+ plugins/client-api/native/native-messages.h
-libsrs_native_la_SOURCES = \
- plugins/native-client-interface/native-client.c \
- plugins/native-client-interface/native-messages.c
+libsrs_native_client_la_SOURCES = \
+ plugins/client-api/native/native-client.c \
+ plugins/client-api/native/native-messages.c
-libsrs_native_la_CFLAGS = \
+libsrs_native_client_la_CFLAGS = \
$(AM_CFLAGS) \
$(MURPHY_COMMON_CFLAGS)
-libsrs_native_la_LIBADD = \
+libsrs_native_client_la_LIBADD = \
$(MURPHY_COMMON_LIBS)
# native client API command line test client
bin_PROGRAMS += srs-native-client
srs_native_client_SOURCES = \
- plugins/native-client-interface/test-client.c
+ plugins/client-api/native/test-client.c
srs_native_client_CFLAGS = \
$(AM_CFLAGS) \
$(MURPHY_COMMON_LIBS) \
$(MURPHY_GLIB_LIBS) \
$(PULSE_LIBS) \
- libsrs-native.la
+ libsrs-native-client.la
libsrs_native_client_la_LDFLAGS = \
-version-info @SRS_VERSION_INFO@
plugin_LTLIBRARIES += plugin-fake-speech.la
plugin_fake_speech_la_SOURCES = \
- plugins/fake-speech-engine/fake.c
+ plugins/speech-to-text/fake/fake.c
plugin_fake_speech_la_CFLAGS = \
$(AM_CFLAGS)
plugin_LTLIBRARIES += plugin-sphinx-speech.la
plugin_sphinx_speech_la_SOURCES = \
- plugins/sphinx-speech-engine/sphinx-plugin.c \
- plugins/sphinx-speech-engine/pulse-interface.c \
- plugins/sphinx-speech-engine/input-buffer.c \
- plugins/sphinx-speech-engine/filter-buffer.c \
- plugins/sphinx-speech-engine/utterance.c \
- plugins/sphinx-speech-engine/decoder-set.c \
- plugins/sphinx-speech-engine/options.c
+ plugins/speech-to-text/sphinx/sphinx-plugin.c \
+ plugins/speech-to-text/sphinx/pulse-interface.c \
+ plugins/speech-to-text/sphinx/input-buffer.c \
+ plugins/speech-to-text/sphinx/filter-buffer.c \
+ plugins/speech-to-text/sphinx/utterance.c \
+ plugins/speech-to-text/sphinx/decoder-set.c \
+ plugins/speech-to-text/sphinx/options.c
plugin_sphinx_speech_la_CFLAGS = \
$(AM_CFLAGS) \
plugin_LTLIBRARIES += plugin-nuance-speech.la
plugin_nuance_speech_la_SOURCES = \
- plugins/nuance-speech-engine/nuance.c
+ plugins/speech-to-text/nuance/nuance.c
plugin_nuance_speech_la_CFLAGS = \
$(AM_CFLAGS)
plugin_LTLIBRARIES += plugin-festival-loader.la
plugin_festival_loader_la_SOURCES = \
- plugins/festival/festival-loader.c
+ plugins/text-to-speech/festival/festival-loader.c
plugin_festival_loader_la_CFLAGS = \
$(AM_CFLAGS)
# festival-voice synthesizer plugin
plugin_LTLIBRARIES += plugin-festival-voice.la
-plugin_festival_voice_la_SOURCES = \
- plugins/festival/festival-voice.c \
- plugins/festival/libcarnival.cc \
- plugins/festival/pulse.c
+plugin_festival_voice_la_SOURCES = \
+ plugins/text-to-speech/festival/festival-voice.c \
+ plugins/text-to-speech/festival/libcarnival.cc \
+ plugins/text-to-speech/festival/pulse.c
plugin_festival_voice_la_CFLAGS = \
$(AM_CFLAGS)
#plugin_LTLIBRARIES += plugin-simple-voice.la
#
#plugin_simple_voice_la_SOURCES = \
-# plugins/simple-voice/simple-voice.c
+# plugins/text-to-speech/simple-voice/simple-voice.c
#
#plugin_simple_voice_la_CFLAGS = \
# $(AM_CFLAGS)
plugin_LTLIBRARIES += plugin-wrt-media-client.la
plugin_wrt_media_client_la_SOURCES = \
- plugins/wrt-media-client/wrt-media-client.c
+ plugins/client-api/wrt-media-client/wrt-media-client.c
plugin_wrt_media_client_la_CFLAGS = \
$(AM_CFLAGS) \
#include <murphy/common/mm.h>
#include <murphy/common/refcnt.h>
-#include "src/daemon/audiobuf.h"
+#include "srs/daemon/audiobuf.h"
/*
* audio buffer handling
#include <murphy/common/mm.h>
#include <murphy/common/log.h>
-#include "src/daemon/resctl.h"
-#include "src/daemon/recognizer.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/resctl.h"
+#include "srs/daemon/recognizer.h"
+#include "srs/daemon/client.h"
typedef struct {
mrp_list_hook_t hook; /* to list of voice requests */
#include <murphy/common/mm.h>
#include <murphy/common/log.h>
-#include "src/daemon/context.h"
-#include "src/daemon/plugin.h"
-#include "src/daemon/config.h"
+#include "srs/daemon/context.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/config.h"
#ifndef PATH_MAX
# define PATH_MAX 1024
/** SRS daemon context type. */
typedef struct srs_context_s srs_context_t;
-#include "src/daemon/config.h"
-#include "src/daemon/resctl.h"
+#include "srs/daemon/config.h"
+#include "srs/daemon/resctl.h"
/*
* daemon context
#include <glib-object.h>
-#include "src/daemon/context.h"
-#include "src/daemon/config.h"
-#include "src/daemon/resctl.h"
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
-#include "src/daemon/recognizer.h"
-
+#include "srs/daemon/context.h"
+#include "srs/daemon/config.h"
+#include "srs/daemon/resctl.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
+#include "srs/daemon/recognizer.h"
static void cleanup_mainloop(srs_context_t *srs);
static void resctl_state_change(srs_resctl_event_t *e, void *user_data);
#include <murphy/common/mm.h>
-#include "src/daemon/context.h"
-#include "src/daemon/plugin.h"
+#include "srs/daemon/context.h"
+#include "srs/daemon/plugin.h"
static srs_plugin_t *find_plugin(srs_context_t *srs, const char *name)
{
#include <murphy/common/list.h>
-#include "src/daemon/context.h"
-#include "src/daemon/voice.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/context.h"
+#include "srs/daemon/voice.h"
+#include "srs/daemon/recognizer.h"
/*
#include <murphy/common/mm.h>
#include <murphy/common/list.h>
-#include "src/daemon/context.h"
-#include "src/daemon/voice.h"
+#include "srs/daemon/context.h"
+#include "srs/daemon/voice.h"
typedef struct state_s state_t;
#include <stdint.h>
#include <stdbool.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
#define PLUGIN_NAME "bluetooth-voice-recognition"
#define BLUETOOTH_PREFIX "bluetooth."
#include <murphy/common/debug.h>
#include <murphy/common/dbus-libdbus.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
+
#include "dbus-config.h"
#define PLUGIN_NAME "dbus-client"
#include <breedline/breedline-murphy.h>
-#include "plugins/dbus-client-interface/dbus-config.h"
+#include "dbus-config.h"
static const char *default_commands[] = {
#include <murphy/common/transport.h>
#include <murphy/common/native-types.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
+
#include "native-messages.h"
#include "native-config.h"
--- /dev/null
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: srs-native-client
+Description: SRS native client library
+Requires: murphy-common
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lsrs-native-client -lmurphy-common
+Cflags: -I${includedir}
#include <gio/gio.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
#define WRTC_NAME "wrt-media-client"
#define WRTC_DESCR "A demo WRT media player relay client."
#include <murphy/common/debug.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/context.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/context.h"
+#include "srs/daemon/recognizer.h"
#define PLUGIN_NAME "input-handler"
#define PLUGIN_DESCR "For activating/deactivating voice recognition"
#include <stdint.h>
#include <stdbool.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
#define PLUGIN_NAME "music-player"
#define MPRIS2_PREFIX "mpris2."
#include <murphy/common/debug.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
#define SEARCH_NAME "search-client"
#define SEARCH_DESCR "A trivial search plugin for SRS."
#include <murphy/common/log.h>
#include <murphy/common/debug.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/client.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/client.h"
+#include "srs/daemon/recognizer.h"
#define DISAMB_NAME "simple-disambiguator"
#define DISAMB_INFO "A test disambiguator."
#include <murphy/common/debug.h>
#include <murphy/common/mainloop.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/recognizer.h"
#define FAKE_NAME "fake-speech"
#define FAKE_DESCRIPTION "A fake/test SRS speech engine to test the infra."
#include <murphy/common/debug.h>
#include <murphy/common/mainloop.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/recognizer.h"
#define NUANCE_NAME "nuance-speech"
#define NUANCE_DESCRIPTION "A Nuance-based speech engine backend plugin."
if (fsg)
cmd_ln_set_str_r(cfg, "-fsg", fsg);
-
+
if (!(ps = ps_init(cfg)))
return -1;
model = fsg_set_iter_fsg(sit);
modnam = fsg_model_name(model);
fsgs[nfsg] = mrp_strdup(modnam ? modnam : "<anonymous>");
-
+
mrp_log_info(" %s", fsgs[nfsg]);
}
filtbuf->buf = mrp_alloc((bufsiz + silence) * sizeof(int16_t));
filtbuf->max = bufsiz;
filtbuf->hwm = hwm;
- filtbuf->silen = silen;
+ filtbuf->silen = silen;
if (ctx->verbose) {
mrp_debug("frame length %d samples", filtbuf->frlen);
if (length > 0) {
if (length == filtbuf->len) {
filtbuf->len = 0; /* nothing to preserve */
-
+
if (ctx->verbose)
mrp_debug("purging buffer. nothing preserved");
}
}
utterance_start(ctx);
-
+
if (filtbuf->len >= filtbuf->hwm)
filter_buffer_utter(ctx, false);
}
#ifndef __SRS_POCKET_SPHINX_OPTIONS_H__
#define __SRS_POCKET_SPHINX_OPTIONS_H__
-#include "src/daemon/config.h"
+#include "srs/daemon/config.h"
#include "sphinx-plugin.h"
mrp_log_error("failed to create input stream");
return -1;
}
-
+
if (target < (minreq * 3))
target = minreq * 3;
battr.minreq = minsiz;
battr.prebuf = 2 * tlength;
battr.fragsize = tlength;
-
+
flags = PA_STREAM_ADJUST_LATENCY;
pa_stream_set_state_callback(pulseif->stream, state_callback, ctx);
pa_context_state_t ctxst = pa_context_get_state(pactx);
int err;
const char *strerr;
-
+
if (ctxst != PA_CONTEXT_TERMINATED && ctxst != PA_CONTEXT_FAILED) {
switch (pa_stream_get_state(stream)) {
-
+
case PA_STREAM_CREATING:
CHECK_STREAM(pulseif, stream);
mrp_debug("sphinx plugin: pulseaudio input stream creating");
break;
-
+
case PA_STREAM_TERMINATED:
CHECK_STREAM(pulseif, stream);
mrp_log_info("sphinx plugin: pulseaudio input stream terminated");
pulseif->stream = NULL;
break;
-
+
case PA_STREAM_READY:
CHECK_STREAM(pulseif, stream);
mrp_log_info("sphinx plugin: pulseaudio input stream is ready");
break;
-
+
case PA_STREAM_FAILED:
default:
if ((err = pa_context_errno(pactx))) {
pulseif->conup = false;
mrp_debug("sphinx plugin: connecting to pulseaudio server");
break;
-
+
case PA_CONTEXT_AUTHORIZING:
pulseif->conup = false;
mrp_debug(" sphinx plugin: authorizing");
break;
-
+
case PA_CONTEXT_SETTING_NAME:
pulseif->conup = false;
mrp_debug(" sphinx plugin: setting name");
break;
-
+
case PA_CONTEXT_READY:
pulseif->conup = true;
mrp_log_info("sphinx plugin: pulseaudio connection established");
stream_create(ctx);
break;
-
+
case PA_CONTEXT_TERMINATED:
mrp_log_info("sphinx plugin: pulseaudio connection terminated");
goto disconnect;
-
+
case PA_CONTEXT_FAILED:
default:
if ((err = pa_context_errno(pactx)) != 0) {
pulse_interface_t *pulseif = ctx->pulseif;
(void)idx;
-
+
if (pulseif->pactx != pactx) {
mrp_log_error("sphinx plugin: %s() confused with data structures",
__FUNCTION__);
#include <stdint.h>
#include <stdbool.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/recognizer.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/recognizer.h"
typedef enum utterance_processor_e utterance_processor_t;
if ((seg = ps_nbest_seg(nb, &score))) {
while (seg && strcmp(ps_seg_word(seg), "<s>"))
seg = ps_seg_next(seg);
-
+
if (!seg)
continue;
-
+
ps_seg_frames(seg, &start, &end);
-
+
cand = cands + ncand;
-
+
cand->score = logmath_exp(lmath, score) / prob;
cand->ntoken = 0;
-
+
length = 0;
-
+
while ((seg = ps_seg_next(seg))) {
if ((hyp = ps_seg_word(seg))) {
if (!strcmp(hyp, "</s>") ||
}
}
} /* while seg */
-
+
if (!seg && cand->ntoken > 0) {
ncand++;
cand->score *= 0.9; /* some penalty */
//memset(cand+1, 0, sizeof(srs_srec_candidate_t));
}
-
+
if (!length) {
tkn = cand->tokens + (cand->ntoken - 1);
length = tkn->end;
} /* for nb */
memset(cand+1, 0, sizeof(srs_srec_candidate_t));
-
+
utt->id = uttid;
utt->score = prob;
//utt->length = length;
#include <murphy/common/debug.h>
#include <murphy/common/mainloop.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/voice.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/voice.h"
#define PLUGIN_NAME "festival-loader"
#define PLUGIN_AUTHORS "Krisztian Litkey <kli@iki.fi>"
#include <murphy/common/debug.h>
#include <murphy/common/mainloop.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/voice.h"
-#include "srs/plugins/festival/festival-voice.h"
-#include "src/plugins/festival/libcarnival.h"
-#include "srs/plugins/festival/pulse.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/voice.h"
+
+#include "festival-voice.h"
+#include "libcarnival.h"
+#include "pulse.h"
#define PLUGIN_NAME "festival-voice"
#define PLUGIN_DESCR "A festival-based voice synthesizer plugin for SRS."
#include <murphy/common/mm.h>
#include <murphy/common/list.h>
-#include "src/plugins/festival/libcarnival.h"
+#include "libcarnival.h"
typedef struct {
char *name; /* unique voice name */
#include <murphy/common/list.h>
#include <murphy/common/refcnt.h>
-#include "src/plugins/festival/festival-voice.h"
-#include "src/plugins/festival/pulse.h"
+#include "festival-voice.h"
+#include "pulse.h"
#define SPEECH "speech"
#define TTS "text-to-speech"
#include <murphy/common/macros.h>
#include <pulse/pulseaudio.h>
-#include "src/plugins/festival/festival-voice.h"
+#include "festival-voice.h"
MRP_CDECL_BEGIN
#include <murphy/common/debug.h>
#include <murphy/common/mainloop.h>
-#include "src/daemon/plugin.h"
-#include "src/daemon/voice.h"
+#include "srs/daemon/plugin.h"
+#include "srs/daemon/voice.h"
#define FESTIVAL "/usr/bin/festival --tts"
#define PAPLAY "/usr/bin/paplay"