diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/Index.ets b/harmony-os/SherpaOnnxHar/sherpa_onnx/Index.ets index 203ec81d66..d7e9f91252 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/Index.ets +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/Index.ets @@ -9,6 +9,11 @@ export { Samples, HomophoneReplacerConfig, OfflineCanaryModelConfig, OfflineDolphinModelConfig, + OfflineFireRedAsrCtcModelConfig, + OfflineFireRedAsrModelConfig, + OfflineFunASRNanoModelConfig, + OfflineMedAsrCtcModelConfig, + OfflineOmnilingualAsrCtcModelConfig, OfflineTransducerModelConfig, OfflineParaformerModelConfig, OfflineNemoEncDecCtcModelConfig, @@ -41,12 +46,17 @@ export { OnlineStream, export { OfflineTtsKittenModelConfig, OfflineTtsKokoroModelConfig, OfflineTtsMatchaModelConfig, + OfflineTtsPocketModelConfig, + OfflineTtsSupertonicModelConfig, OfflineTtsVitsModelConfig, + OfflineTtsZipvoiceModelConfig, OfflineTtsModelConfig, OfflineTtsConfig, OfflineTts, TtsOutput, + TtsGenerationConfig, TtsInput, + TtsInputWithConfig, } from './src/main/ets/components/NonStreamingTts'; export { SpeakerEmbeddingExtractorConfig, diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/types/libsherpa_onnx/Index.d.ts b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/types/libsherpa_onnx/Index.d.ts index 2c54471dc9..9b684f38ad 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/types/libsherpa_onnx/Index.d.ts +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/types/libsherpa_onnx/Index.d.ts @@ -47,7 +47,9 @@ export type TtsOutput = { }; export const offlineTtsGenerate: (handle: object, input: object) => TtsOutput; +export const offlineTtsGenerateWithConfig: (handle: object, input: object) => TtsOutput; export const offlineTtsGenerateAsync: (handle: object, input: object) => Promise; +export const offlineTtsGenerateAsyncWithConfig: (handle: object, input: object) => Promise; export const createSpeakerEmbeddingExtractor: (config: object, mgr?: object) => object; export const speakerEmbeddingExtractorDim: (handle: object) => number; diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingAsr.ets b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingAsr.ets index dae2ef6067..acecf98a9a 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingAsr.ets +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingAsr.ets @@ -56,6 +56,30 @@ export class OfflineDolphinModelConfig { public model: string = ''; } +export class OfflineOmnilingualAsrCtcModelConfig { + public model: string = ''; +} + +export class OfflineMedAsrCtcModelConfig { + public model: string = ''; +} + +export class OfflineFunASRNanoModelConfig { + public encoderAdaptor: string = ''; + public llm: string = ''; + public embedding: string = ''; + public tokenizer: string = ''; + public systemPrompt: string = ''; + public userPrompt: string = ''; + public maxNewTokens: number = 0; + public temperature: number = 0; + public topP: number = 0; + public seed: number = 0; + public language: string = ''; + public itn: number = 0; + public hotwords: string = ''; +} + export class OfflineZipformerCtcModelConfig { public model: string = ''; } @@ -64,12 +88,23 @@ export class OfflineWenetCtcModelConfig { public model: string = ''; } +export class OfflineFireRedAsrModelConfig { + public encoder: string = ''; + public decoder: string = ''; +} + +export class OfflineFireRedAsrCtcModelConfig { + public model: string = ''; +} + export class OfflineWhisperModelConfig { public encoder: string = ''; public decoder: string = ''; public language: string = ''; public task: string = 'transcribe'; public tailPaddings: number = -1; + public enableTokenTimestamps: boolean = false; + public enableSegmentTimestamps: boolean = false; } export class OfflineCanaryModelConfig { @@ -95,6 +130,7 @@ export class OfflineMoonshineModelConfig { public encoder: string = ''; public uncachedDecoder: string = ''; public cachedDecoder: string = ''; + public mergedDecoder: string = ''; } export class OfflineModelConfig { @@ -113,10 +149,15 @@ export class OfflineModelConfig { public telespeechCtc: string = ''; public senseVoice: OfflineSenseVoiceModelConfig = new OfflineSenseVoiceModelConfig(); public moonshine: OfflineMoonshineModelConfig = new OfflineMoonshineModelConfig(); + public fireRedAsr: OfflineFireRedAsrModelConfig = new OfflineFireRedAsrModelConfig(); public dolphin: OfflineDolphinModelConfig = new OfflineDolphinModelConfig(); public zipformerCtc: OfflineZipformerCtcModelConfig = new OfflineZipformerCtcModelConfig(); public canary: OfflineCanaryModelConfig = new OfflineCanaryModelConfig(); public wenetCtc: OfflineWenetCtcModelConfig = new OfflineWenetCtcModelConfig(); + public omnilingual: OfflineOmnilingualAsrCtcModelConfig = new OfflineOmnilingualAsrCtcModelConfig(); + public medasr: OfflineMedAsrCtcModelConfig = new OfflineMedAsrCtcModelConfig(); + public funasrNano: OfflineFunASRNanoModelConfig = new OfflineFunASRNanoModelConfig(); + public fireRedAsrCtc: OfflineFireRedAsrCtcModelConfig = new OfflineFireRedAsrCtcModelConfig(); } export class OfflineLMConfig { diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingTts.ets b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingTts.ets index 48150ea0a1..640010e68b 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingTts.ets +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/NonStreamingTts.ets @@ -3,7 +3,9 @@ import { getOfflineTtsNumSpeakers, getOfflineTtsSampleRate, offlineTtsGenerate, + offlineTtsGenerateAsyncWithConfig, offlineTtsGenerateAsync, + offlineTtsGenerateWithConfig, } from 'libsherpa_onnx.so'; export class OfflineTtsVitsModelConfig { @@ -47,11 +49,48 @@ export class OfflineTtsKittenModelConfig { public lengthScale: number = 1.0; } +export class OfflineTtsZipvoiceModelConfig { + public tokens: string = ''; + public encoder: string = ''; + public decoder: string = ''; + public vocoder: string = ''; + public dataDir: string = ''; + public lexicon: string = ''; + public featScale: number = 0.1; + public tShift: number = 0.5; + public targetRms: number = 0.1; + public guidanceScale: number = 1.0; +} + +export class OfflineTtsPocketModelConfig { + public lmFlow: string = ''; + public lmMain: string = ''; + public encoder: string = ''; + public decoder: string = ''; + public textConditioner: string = ''; + public vocabJson: string = ''; + public tokenScoresJson: string = ''; + public voiceEmbeddingCacheCapacity: number = 50; +} + +export class OfflineTtsSupertonicModelConfig { + public durationPredictor: string = ''; + public textEncoder: string = ''; + public vectorEstimator: string = ''; + public vocoder: string = ''; + public ttsJson: string = ''; + public unicodeIndexer: string = ''; + public voiceStyle: string = ''; +} + export class OfflineTtsModelConfig { public vits: OfflineTtsVitsModelConfig = new OfflineTtsVitsModelConfig(); public matcha: OfflineTtsMatchaModelConfig = new OfflineTtsMatchaModelConfig(); public kokoro: OfflineTtsKokoroModelConfig = new OfflineTtsKokoroModelConfig(); public kitten: OfflineTtsKittenModelConfig = new OfflineTtsKittenModelConfig(); + public zipvoice: OfflineTtsZipvoiceModelConfig = new OfflineTtsZipvoiceModelConfig(); + public pocket: OfflineTtsPocketModelConfig = new OfflineTtsPocketModelConfig(); + public supertonic: OfflineTtsSupertonicModelConfig = new OfflineTtsSupertonicModelConfig(); public numThreads: number = 1; public debug: boolean = false; public provider: string = 'cpu'; @@ -75,10 +114,29 @@ interface TtsCallbackData { progress: number; } +export class TtsGenerationConfig { + public silenceScale: number = 0.2; + public speed: number = 1.0; + public sid: number = 0; + public referenceAudio?: Float32Array; + public referenceSampleRate: number = 0; + public referenceText: string = ''; + public numSteps: number = 5; + public extra: object = {}; +} + export class TtsInput { public text: string = ''; public sid: number = 0; public speed: number = 1.0; + public enableExternalBuffer: boolean = true; + public callback?: (data: TtsCallbackData) => number; +} + +export class TtsInputWithConfig { + public text: string = ''; + public generationConfig: TtsGenerationConfig = new TtsGenerationConfig(); + public enableExternalBuffer: boolean = true; public callback?: (data: TtsCallbackData) => number; } @@ -109,4 +167,12 @@ export class OfflineTts { generateAsync(input: TtsInput): Promise { return offlineTtsGenerateAsync(this.handle, input); } + + generateWithConfig(input: TtsInputWithConfig): TtsOutput { + return offlineTtsGenerateWithConfig(this.handle, input) as TtsOutput; + } + + generateAsyncWithConfig(input: TtsInputWithConfig): Promise { + return offlineTtsGenerateAsyncWithConfig(this.handle, input); + } } diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/StreamingAsr.ets b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/StreamingAsr.ets index a8b7b536e9..2fbefbd128 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/StreamingAsr.ets +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/StreamingAsr.ets @@ -67,6 +67,8 @@ export class OnlineModelConfig { public modelType: string = ''; public modelingUnit: string = "cjkchar"; public bpeVocab: string = ''; + public tokensBuf: string = ''; + public tokensBufSize: number = 0; } export class OnlineCtcFstDecoderConfig { @@ -89,6 +91,8 @@ export class OnlineRecognizerConfig { public ruleFsts: string = ''; public ruleFars: string = ''; public blankPenalty: number = 0; + public hotwordsBuf: string = ''; + public hotwordsBufSize: number = 0; public hr: HomophoneReplacerConfig = new HomophoneReplacerConfig(); } diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/Vad.ets b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/Vad.ets index 7ac42da5ad..557c25644b 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/Vad.ets +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/ets/components/Vad.ets @@ -61,13 +61,16 @@ export class VadConfig { public sampleRate: number; public debug: boolean; public numThreads: number; + public provider: string = 'cpu'; - public constructor(sileroVad: SileroVadConfig, tenVad: TenVadConfig, sampleRate: number, debug: boolean, numThreads: number) { + public constructor(sileroVad: SileroVadConfig, tenVad: TenVadConfig, sampleRate: number, debug: boolean, + numThreads: number, provider: string = 'cpu') { this.sileroVad = sileroVad; this.tenVad = tenVad; this.sampleRate = sampleRate; this.debug = debug; this.numThreads = numThreads; + this.provider = provider; } }