Skip to content

Commit 5424cc8

Browse files
authored
Merge pull request #704 from nature-heart-software/feat/add-ibm-watson-options
Add IBM Watson options
2 parents 523b6c0 + c45ca7e commit 5424cc8

File tree

5 files changed

+95
-21
lines changed

5 files changed

+95
-21
lines changed

apps/app/electron-builder.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ module.exports = {
3737
// eslint-disable-next-line no-template-curly-in-string
3838
artifactName: '${name}-setup-${version}-${os}.${ext}',
3939
publish: ['github'],
40-
publishAutoUpdate: false,
4140
electronVersion: getElectronVersion(),
4241
extraFiles: ['./resources/**'],
4342
}

apps/app/src/plugins/speech-engines/ibm-watson/NvSettings.vue

Lines changed: 70 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,69 @@
11
<template>
22
<NvAccessBlocker
33
:allowed="
4-
(speechStore.hasUniversalApiCredentials && !getProperty('useLocalCredentials')) ||
4+
(speechStore.hasUniversalApiCredentials &&
5+
!getProperty('useLocalCredentials')) ||
56
[getProperty('apiKey', true), getProperty('url')].every(Boolean)
67
"
78
reason="Credentials required"
89
>
9-
<NvFormItem label="Voice">
10-
<NvVoiceSelect />
11-
</NvFormItem>
10+
<NvStack spacing="5">
11+
<NvFormItem label="Voice">
12+
<NvVoiceSelect />
13+
</NvFormItem>
14+
<NvDivider direction="horizontal" />
15+
<NvFormItem label="Speaking Rate">
16+
<NvGroup>
17+
<NvRangeInput
18+
:max="300"
19+
:min="-300"
20+
:step="1"
21+
class="!grow"
22+
v-bind="{
23+
modelValue: getProperty('ratePercentage'),
24+
'onUpdate:modelValue': (value) =>
25+
setProperty('ratePercentage', value),
26+
}"
27+
/>
28+
<NvNumberInput
29+
:max="300"
30+
:min="-300"
31+
:step="1"
32+
v-bind="{
33+
modelValue: getProperty('ratePercentage'),
34+
'onUpdate:modelValue': (value) =>
35+
setProperty('ratePercentage', value),
36+
}"
37+
/>
38+
</NvGroup>
39+
</NvFormItem>
40+
<NvDivider direction="horizontal" />
41+
<NvFormItem label="Pitch">
42+
<NvGroup>
43+
<NvRangeInput
44+
:max="300"
45+
:min="-300"
46+
:step="1"
47+
class="!grow"
48+
v-bind="{
49+
modelValue: getProperty('pitchPercentage'),
50+
'onUpdate:modelValue': (value) =>
51+
setProperty('pitchPercentage', value),
52+
}"
53+
/>
54+
<NvNumberInput
55+
:max="300"
56+
:min="-300"
57+
:step="1"
58+
v-bind="{
59+
modelValue: getProperty('pitchPercentage'),
60+
'onUpdate:modelValue': (value) =>
61+
setProperty('pitchPercentage', value),
62+
}"
63+
/>
64+
</NvGroup>
65+
</NvFormItem>
66+
</NvStack>
1267
</NvAccessBlocker>
1368
<template v-if="speechStore.hasUniversalApiCredentials">
1469
<NvDivider direction="horizontal" />
@@ -18,11 +73,18 @@
1873
</NvStack>
1974
<NvSwitch
2075
:modelValue="getProperty('useLocalCredentials')"
21-
@update:modelValue="(value) => setProperty('useLocalCredentials', value)"
76+
@update:modelValue="
77+
(value) => setProperty('useLocalCredentials', value)
78+
"
2279
/>
2380
</NvGroup>
2481
</template>
25-
<template v-if="getProperty('useLocalCredentials') || !speechStore.hasUniversalApiCredentials">
82+
<template
83+
v-if="
84+
getProperty('useLocalCredentials') ||
85+
!speechStore.hasUniversalApiCredentials
86+
"
87+
>
2688
<NvDivider direction="horizontal" />
2789
<NvStack spacing="5">
2890
<NvFormItem label="API Key">
@@ -52,6 +114,8 @@ import {
52114
NvFormItem,
53115
NvGroup,
54116
NvInput,
117+
NvNumberInput,
118+
NvRangeInput,
55119
NvStack,
56120
NvSwitch,
57121
NvText,

apps/app/src/plugins/speech-engines/ibm-watson/register.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,26 @@ registerEngine({
2121
getCredentials,
2222
hasCredentials() {
2323
const speechStore = useSpeechStore()
24-
return speechStore.hasUniversalApiCredentials || Object.values(getCredentials()).every(Boolean)
24+
return (
25+
speechStore.hasUniversalApiCredentials ||
26+
Object.values(getCredentials()).every(Boolean)
27+
)
2528
},
2629
getPayload({ text, translatedText, voice }) {
2730
return {
2831
text: translatedText || text,
2932
voice: (voice || getSelectedVoice()).name,
33+
ratePercentage: Number(getProperty('ratePercentage')),
34+
pitchPercentage: Number(getProperty('pitchPercentage')),
3035
}
3136
},
3237
getLanguageCode(voice) {
3338
return (voice || getSelectedVoice()).language
3439
},
3540
synthesizeSpeech({ credentials, payload }) {
36-
return api(getProperty('useLocalCredentials') ? 'local' : 'remote').post<Blob>(
41+
return api(
42+
getProperty('useLocalCredentials') ? 'local' : 'remote',
43+
).post<Blob>(
3744
'/tts/ibm-watson/synthesize-speech',
3845
{
3946
credentials,

apps/app/src/plugins/speech-engines/ibm-watson/store.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ export const { setProperty, getProperty } = definePluginStore(ENGINE_ID, {
1717
},
1818
useLocalCredentials: false,
1919
favoriteVoiceIds: [],
20+
ratePercentage: 0,
21+
pitchPercentage: 0,
2022
})

apps/app/src/teams/messenger/views/NvSettings.vue

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,20 @@
5454
</NvStack>
5555
</div>
5656
<div class="settings__content flex-1 pl-4">
57-
<div :id="id" class="h-full relative">
58-
<!-- View -->
59-
<router-view v-slot="{ Component }">
60-
<Transition class="transition">
61-
<div
62-
:key="Component"
63-
class="absolute inset-0 overflow-y-auto"
64-
>
65-
<component :is="Component" />
66-
</div>
67-
</Transition>
68-
</router-view>
57+
<div :id="id" class="h-full relative overflow-hidden">
58+
<div class="h-full relative">
59+
<!-- View -->
60+
<router-view v-slot="{ Component }">
61+
<Transition class="transition">
62+
<div
63+
:key="Component"
64+
class="absolute inset-0 overflow-y-auto"
65+
>
66+
<component :is="Component" />
67+
</div>
68+
</Transition>
69+
</router-view>
70+
</div>
6971
</div>
7072
</div>
7173
</div>

0 commit comments

Comments
 (0)