Skip to content

Commit 4ac355b

Browse files
committed
feat(gateway): add talk speak rpc
1 parent 84ee6fb commit 4ac355b

File tree

8 files changed

+447
-2
lines changed

8 files changed

+447
-2
lines changed

src/gateway/method-scopes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ const METHOD_SCOPE_GROUPS: Record<OperatorScope, readonly string[]> = {
9898
"agent.wait",
9999
"wake",
100100
"talk.mode",
101+
"talk.speak",
101102
"tts.enable",
102103
"tts.disable",
103104
"tts.convert",

src/gateway/protocol/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ import {
4848
TalkConfigParamsSchema,
4949
type TalkConfigResult,
5050
TalkConfigResultSchema,
51+
type TalkSpeakParams,
52+
TalkSpeakParamsSchema,
53+
type TalkSpeakResult,
54+
TalkSpeakResultSchema,
5155
type ChannelsStatusParams,
5256
ChannelsStatusParamsSchema,
5357
type ChannelsStatusResult,
@@ -375,6 +379,8 @@ export const validateWizardStatusParams = ajv.compile<WizardStatusParams>(Wizard
375379
export const validateTalkModeParams = ajv.compile<TalkModeParams>(TalkModeParamsSchema);
376380
export const validateTalkConfigParams = ajv.compile<TalkConfigParams>(TalkConfigParamsSchema);
377381
export const validateTalkConfigResult = ajv.compile<TalkConfigResult>(TalkConfigResultSchema);
382+
export const validateTalkSpeakParams = ajv.compile<TalkSpeakParams>(TalkSpeakParamsSchema);
383+
export const validateTalkSpeakResult = ajv.compile<TalkSpeakResult>(TalkSpeakResultSchema);
378384
export const validateChannelsStatusParams = ajv.compile<ChannelsStatusParams>(
379385
ChannelsStatusParamsSchema,
380386
);
@@ -540,6 +546,8 @@ export {
540546
WizardStatusResultSchema,
541547
TalkConfigParamsSchema,
542548
TalkConfigResultSchema,
549+
TalkSpeakParamsSchema,
550+
TalkSpeakResultSchema,
543551
ChannelsStatusParamsSchema,
544552
ChannelsStatusResultSchema,
545553
ChannelsLogoutParamsSchema,
@@ -629,6 +637,8 @@ export type {
629637
WizardStatusResult,
630638
TalkConfigParams,
631639
TalkConfigResult,
640+
TalkSpeakParams,
641+
TalkSpeakResult,
632642
TalkModeParams,
633643
ChannelsStatusParams,
634644
ChannelsStatusResult,

src/gateway/protocol/schema/channels.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,23 @@ export const TalkConfigParamsSchema = Type.Object(
1616
{ additionalProperties: false },
1717
);
1818

19+
export const TalkSpeakParamsSchema = Type.Object(
20+
{
21+
text: NonEmptyString,
22+
voiceId: Type.Optional(Type.String()),
23+
modelId: Type.Optional(Type.String()),
24+
speed: Type.Optional(Type.Number()),
25+
stability: Type.Optional(Type.Number()),
26+
similarity: Type.Optional(Type.Number()),
27+
style: Type.Optional(Type.Number()),
28+
speakerBoost: Type.Optional(Type.Boolean()),
29+
seed: Type.Optional(Type.Integer({ minimum: 0 })),
30+
normalize: Type.Optional(Type.String()),
31+
language: Type.Optional(Type.String()),
32+
},
33+
{ additionalProperties: false },
34+
);
35+
1936
const talkProviderFieldSchemas = {
2037
voiceId: Type.Optional(Type.String()),
2138
voiceAliases: Type.Optional(Type.Record(Type.String(), Type.String())),
@@ -85,6 +102,18 @@ export const TalkConfigResultSchema = Type.Object(
85102
{ additionalProperties: false },
86103
);
87104

105+
export const TalkSpeakResultSchema = Type.Object(
106+
{
107+
audioBase64: NonEmptyString,
108+
provider: NonEmptyString,
109+
outputFormat: Type.Optional(Type.String()),
110+
voiceCompatible: Type.Optional(Type.Boolean()),
111+
mimeType: Type.Optional(Type.String()),
112+
fileExtension: Type.Optional(Type.String()),
113+
},
114+
{ additionalProperties: false },
115+
);
116+
88117
export const ChannelsStatusParamsSchema = Type.Object(
89118
{
90119
probe: Type.Optional(Type.Boolean()),

src/gateway/protocol/schema/protocol-schemas.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import {
4444
ChannelsLogoutParamsSchema,
4545
TalkConfigParamsSchema,
4646
TalkConfigResultSchema,
47+
TalkSpeakParamsSchema,
48+
TalkSpeakResultSchema,
4749
ChannelsStatusParamsSchema,
4850
ChannelsStatusResultSchema,
4951
TalkModeParamsSchema,
@@ -238,6 +240,8 @@ export const ProtocolSchemas = {
238240
TalkModeParams: TalkModeParamsSchema,
239241
TalkConfigParams: TalkConfigParamsSchema,
240242
TalkConfigResult: TalkConfigResultSchema,
243+
TalkSpeakParams: TalkSpeakParamsSchema,
244+
TalkSpeakResult: TalkSpeakResultSchema,
241245
ChannelsStatusParams: ChannelsStatusParamsSchema,
242246
ChannelsStatusResult: ChannelsStatusResultSchema,
243247
ChannelsLogoutParams: ChannelsLogoutParamsSchema,

src/gateway/protocol/schema/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ export type WizardStatusResult = SchemaType<"WizardStatusResult">;
7070
export type TalkModeParams = SchemaType<"TalkModeParams">;
7171
export type TalkConfigParams = SchemaType<"TalkConfigParams">;
7272
export type TalkConfigResult = SchemaType<"TalkConfigResult">;
73+
export type TalkSpeakParams = SchemaType<"TalkSpeakParams">;
74+
export type TalkSpeakResult = SchemaType<"TalkSpeakResult">;
7375
export type ChannelsStatusParams = SchemaType<"ChannelsStatusParams">;
7476
export type ChannelsStatusResult = SchemaType<"ChannelsStatusResult">;
7577
export type ChannelsLogoutParams = SchemaType<"ChannelsLogoutParams">;

src/gateway/server-methods-list.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const BASE_METHODS = [
3434
"wizard.cancel",
3535
"wizard.status",
3636
"talk.config",
37+
"talk.speak",
3738
"talk.mode",
3839
"models.list",
3940
"tools.catalog",

0 commit comments

Comments
 (0)