2 * Copyright (c) 2012 - 2013, Intel Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of Intel Corporation nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #ifndef __SRS_DAEMON_VOICE_H__
31 #define __SRS_DAEMON_VOICE_H__
33 #include "srs/daemon/context.h"
34 #include "srs/daemon/voice-api-types.h"
37 * speech synthesizer backend interface
40 /** Voice rendering notification callback type. */
41 typedef void (*srs_voice_notify_t)(srs_voice_event_t *event, void *notify_data);
44 * API to voice backend
47 /** Render the given message. */
48 uint32_t (*render)(const char *msg, char **tags, int actor, double rate,
49 double pitch, int notify_events, void *api_data);
50 /** Cancel the given rendering, notify cancellation if asked for. */
51 void (*cancel)(uint32_t id, void *api_data);
54 /** Register a voice synthesizer backend. */
55 int srs_register_voice(srs_context_t *srs, const char *name,
56 srs_voice_api_t *api, void *api_data,
57 srs_voice_actor_t *actors, int nactor,
58 srs_voice_notify_t *notify, void **notify_data);
60 /** Unregister the given voice synthesizer backend. */
61 void srs_unregister_voice(srs_context_t *srs, const char *name);
64 /** Render the given message using the given parameters. */
65 uint32_t srs_render_voice(srs_context_t *srs, const char *msg,
66 char **tags, const char *voice, double rate,
67 double pitch, int timeout, int notify_events,
68 srs_voice_notify_t notify, void *user_data);
70 /** Cancel the given voice rendering. */
71 void srs_cancel_voice(srs_context_t *srs, uint32_t id, int notify);
73 /** Query languages. */
74 int srs_query_voices(srs_context_t *srs, const char *language,
75 srs_voice_actor_t **actors);
77 /** Free voice query results. */
78 void srs_free_queried_voices(srs_voice_actor_t *actors);
80 #endif /* __SRS_DAEMON_VOICE_H__ */