@aituber-onair/core 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/services/voice/engines/NoneEngine.d.ts +28 -0
- package/dist/services/voice/engines/NoneEngine.js +34 -0
- package/dist/services/voice/engines/NoneEngine.js.map +1 -0
- package/dist/services/voice/engines/VoiceEngineFactory.js +3 -0
- package/dist/services/voice/engines/VoiceEngineFactory.js.map +1 -1
- package/dist/types/voiceEngine.d.ts +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -79,8 +79,7 @@ pnpm install @aituber-onair/core
|
|
|
79
79
|
|
|
80
80
|
## Basic Usage
|
|
81
81
|
|
|
82
|
-
For more practical usage examples, please see [Simple AI Chat App with AITuber OnAir Core]
|
|
83
|
-
(https://github.com/shinshin86/simple-aichat-app-with-aituber-onair-core).
|
|
82
|
+
For more practical usage examples, please see [Simple AI Chat App with AITuber OnAir Core](https://github.com/shinshin86/simple-aichat-app-with-aituber-onair-core).
|
|
84
83
|
|
|
85
84
|
Below is a simplified example of how to use **AITuber OnAir Core**:
|
|
86
85
|
|
|
@@ -1083,6 +1082,7 @@ Possible use cases for `chatLogUpdated` include:
|
|
|
1083
1082
|
- **NijiVoice**: AI-based speech synthesis service (requires an API key).
|
|
1084
1083
|
- **AivisSpeech**: Speech synthesis using AI technology.
|
|
1085
1084
|
- **OpenAI TTS**: Text-to-speech API from OpenAI.
|
|
1085
|
+
- **None**: No voice mode (no audio output).
|
|
1086
1086
|
|
|
1087
1087
|
You can dynamically switch the speech engine via `updateVoiceService`:
|
|
1088
1088
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { VoiceActor, Talk } from '../../../types';
|
|
2
|
+
import { VoiceEngine } from './VoiceEngine';
|
|
3
|
+
/**
|
|
4
|
+
* None (no voice) engine
|
|
5
|
+
* Implementation using Null Object pattern that performs no voice processing
|
|
6
|
+
*/
|
|
7
|
+
export declare class NoneEngine implements VoiceEngine {
|
|
8
|
+
/**
|
|
9
|
+
* Get voice data (performs no processing)
|
|
10
|
+
* @param input script
|
|
11
|
+
* @param speaker speaker ID
|
|
12
|
+
* @param apiKey API key (not used)
|
|
13
|
+
* @param voiceActor voice actor information (not used)
|
|
14
|
+
* @returns empty ArrayBuffer
|
|
15
|
+
*/
|
|
16
|
+
fetchAudio(input: Talk, speaker: string, apiKey?: string, voiceActor?: VoiceActor): Promise<ArrayBuffer>;
|
|
17
|
+
/**
|
|
18
|
+
* Get test message
|
|
19
|
+
* @param textVoiceText custom text
|
|
20
|
+
* @returns test message
|
|
21
|
+
*/
|
|
22
|
+
getTestMessage(textVoiceText?: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Set custom API endpoint URL (performs no processing)
|
|
25
|
+
* @param apiUrl custom API endpoint URL
|
|
26
|
+
*/
|
|
27
|
+
setApiEndpoint?(apiUrl: string): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* None (no voice) engine
|
|
3
|
+
* Implementation using Null Object pattern that performs no voice processing
|
|
4
|
+
*/
|
|
5
|
+
export class NoneEngine {
|
|
6
|
+
/**
|
|
7
|
+
* Get voice data (performs no processing)
|
|
8
|
+
* @param input script
|
|
9
|
+
* @param speaker speaker ID
|
|
10
|
+
* @param apiKey API key (not used)
|
|
11
|
+
* @param voiceActor voice actor information (not used)
|
|
12
|
+
* @returns empty ArrayBuffer
|
|
13
|
+
*/
|
|
14
|
+
async fetchAudio(input, speaker, apiKey, voiceActor) {
|
|
15
|
+
// Return empty ArrayBuffer since no voice is needed
|
|
16
|
+
return new ArrayBuffer(0);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get test message
|
|
20
|
+
* @param textVoiceText custom text
|
|
21
|
+
* @returns test message
|
|
22
|
+
*/
|
|
23
|
+
getTestMessage(textVoiceText) {
|
|
24
|
+
return textVoiceText || 'No voice mode is active';
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Set custom API endpoint URL (performs no processing)
|
|
28
|
+
* @param apiUrl custom API endpoint URL
|
|
29
|
+
*/
|
|
30
|
+
setApiEndpoint(apiUrl) {
|
|
31
|
+
// No processing needed in no voice mode
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=NoneEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoneEngine.js","sourceRoot":"","sources":["../../../../src/services/voice/engines/NoneEngine.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CACd,KAAW,EACX,OAAe,EACf,MAAe,EACf,UAAuB;QAEvB,oDAAoD;QACpD,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,aAAsB;QACnC,OAAO,aAAa,IAAI,yBAAyB,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAE,MAAc;QAC5B,wCAAwC;IAC1C,CAAC;CACF"}
|
|
@@ -3,6 +3,7 @@ import { VoicePeakEngine } from './VoicePeakEngine';
|
|
|
3
3
|
import { AivisSpeechEngine } from './AivisSpeechEngine';
|
|
4
4
|
import { OpenAiEngine } from './OpenAiEngine';
|
|
5
5
|
import { NijiVoiceEngine } from './NijiVoiceEngine';
|
|
6
|
+
import { NoneEngine } from './NoneEngine';
|
|
6
7
|
/**
|
|
7
8
|
* Voice engine factory
|
|
8
9
|
* Generate appropriate voice engine instances based on voice engine type
|
|
@@ -26,6 +27,8 @@ export class VoiceEngineFactory {
|
|
|
26
27
|
return new OpenAiEngine();
|
|
27
28
|
case 'nijivoice':
|
|
28
29
|
return new NijiVoiceEngine();
|
|
30
|
+
case 'none':
|
|
31
|
+
return new NoneEngine();
|
|
29
32
|
default:
|
|
30
33
|
throw new Error(`Unsupported voice engine type: ${engineType}`);
|
|
31
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceEngineFactory.js","sourceRoot":"","sources":["../../../../src/services/voice/engines/VoiceEngineFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"VoiceEngineFactory.js","sourceRoot":"","sources":["../../../../src/services/voice/engines/VoiceEngineFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,UAA2B;QAC1C,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,IAAI,cAAc,EAAE,CAAC;YAC9B,KAAK,WAAW;gBACd,OAAO,IAAI,eAAe,EAAE,CAAC;YAC/B,KAAK,aAAa;gBAChB,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,KAAK,WAAW;gBACd,OAAO,IAAI,eAAe,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACT,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type VoiceEngineType = 'voicevox' | 'voicepeak' | 'openai' | 'nijivoice' | 'aivisSpeech';
|
|
1
|
+
export type VoiceEngineType = 'voicevox' | 'voicepeak' | 'openai' | 'nijivoice' | 'aivisSpeech' | 'none';
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|