22 * TinyLM - Modular library for text generation and embeddings
33 */
44
5- import { tryGarbageCollection , detectEnvironment , EnvironmentInfo } from './utils' ;
6- import { ProgressTracker } from './ProgressTracker' ;
7- import { WebGPUChecker } from './WebGPUChecker' ;
8- import { GenerationModule } from './GenerationModule' ;
9- import { EmbeddingsModule } from './EmbeddingsModule' ;
5+ import { tryGarbageCollection , detectEnvironment , EnvironmentInfo } from './utils.js' ;
6+ import { ProgressTracker } from './ProgressTracker.js' ;
7+ import { WebGPUChecker } from './WebGPUChecker.js' ;
8+ import { GenerationModule } from './GenerationModule.js' ;
9+ import { EmbeddingsModule } from './EmbeddingsModule.js' ;
10+ import { AudioModule } from './AudioModule.js' ;
11+ import { AudioCreateOptions , AudioResult } from './types.js' ;
12+
1013
1114import {
1215 TinyLMOptions ,
@@ -18,7 +21,7 @@ import {
1821 ModelLoadOptions ,
1922 EmbeddingCreateOptions ,
2023 EmbeddingResult
21- } from './types' ;
24+ } from './types.js ' ;
2225
2326/**
2427 * Main TinyLM class that provides the OpenAI-compatible API
@@ -33,6 +36,8 @@ export class TinyLM {
3336 // Modules
3437 private generationModule : GenerationModule ;
3538 private embeddingsModule : EmbeddingsModule ;
39+ private audioModule : AudioModule ;
40+
3641
3742 // API structure
3843 readonly chat : {
@@ -46,6 +51,13 @@ export class TinyLM {
4651 create : ( options : EmbeddingCreateOptions ) => Promise < EmbeddingResult > ;
4752 } ;
4853
54+ // Audio API
55+ readonly audio : {
56+ speech : {
57+ create : ( options : AudioCreateOptions ) => Promise < AudioResult | AsyncGenerator < AudioResult , void , void > > ;
58+ } ;
59+ } ;
60+
4961 readonly models : {
5062 load : ( options : ModelLoadOptions ) => Promise < any > ;
5163 offload : ( options : { model : string } ) => Promise < boolean > ;
@@ -61,7 +73,7 @@ export class TinyLM {
6173 */
6274 constructor ( options : TinyLMOptions = { } ) {
6375 this . options = {
64- progressCallback : options . progressCallback || ( ( ) => { } ) ,
76+ progressCallback : options . progressCallback || ( ( ) => { } ) ,
6577 progressThrottleTime : options . progressThrottleTime || 100 ,
6678 ...options
6779 } as Required < TinyLMOptions > ;
@@ -79,6 +91,7 @@ export class TinyLM {
7991 // Initialize modules
8092 this . generationModule = new GenerationModule ( this ) ;
8193 this . embeddingsModule = new EmbeddingsModule ( this ) ;
94+ this . audioModule = new AudioModule ( this ) ;
8295
8396 // Create API structure similar to OpenAI
8497 this . chat = {
@@ -92,6 +105,13 @@ export class TinyLM {
92105 create : this . embeddingsModule . create . bind ( this . embeddingsModule )
93106 } ;
94107
108+ // Audio API
109+ this . audio = {
110+ speech : {
111+ create : this . audioModule . create . bind ( this . audioModule )
112+ }
113+ } ;
114+
95115 // Model management API
96116 this . models = {
97117 load : this . generationModule . loadModel . bind ( this . generationModule ) ,
@@ -173,6 +193,10 @@ export class TinyLM {
173193 : undefined
174194 } ) ;
175195
196+ await this . audioModule . init ( {
197+ defaultModel : options . speechModel
198+ } ) ;
199+
176200 this . initialized = true ;
177201 }
178202 return this ;
0 commit comments