Flutter Config toJson/fromJson (#1893)

This commit is contained in:
Grey Faulkenberry, MD MPH
2025-02-25 01:43:48 -05:00
committed by GitHub
parent 808587accd
commit 70742b69ec
11 changed files with 817 additions and 17 deletions

View File

@@ -16,11 +16,25 @@ class OnlineTransducerModelConfig {
this.joiner = '',
});
factory OnlineTransducerModelConfig.fromJson(Map<String, dynamic> json) {
return OnlineTransducerModelConfig(
encoder: json['encoder'] as String? ?? '',
decoder: json['decoder'] as String? ?? '',
joiner: json['joiner'] as String? ?? '',
);
}
@override
String toString() {
return 'OnlineTransducerModelConfig(encoder: $encoder, decoder: $decoder, joiner: $joiner)';
}
Map<String, dynamic> toJson() => {
'encoder': encoder,
'decoder': decoder,
'joiner': joiner,
};
final String encoder;
final String decoder;
final String joiner;
@@ -29,11 +43,23 @@ class OnlineTransducerModelConfig {
class OnlineParaformerModelConfig {
const OnlineParaformerModelConfig({this.encoder = '', this.decoder = ''});
factory OnlineParaformerModelConfig.fromJson(Map<String, dynamic> json) {
return OnlineParaformerModelConfig(
encoder: json['encoder'] as String? ?? '',
decoder: json['decoder'] as String? ?? '',
);
}
@override
String toString() {
return 'OnlineParaformerModelConfig(encoder: $encoder, decoder: $decoder)';
}
Map<String, dynamic> toJson() => {
'encoder': encoder,
'decoder': decoder,
};
final String encoder;
final String decoder;
}
@@ -41,11 +67,21 @@ class OnlineParaformerModelConfig {
class OnlineZipformer2CtcModelConfig {
const OnlineZipformer2CtcModelConfig({this.model = ''});
factory OnlineZipformer2CtcModelConfig.fromJson(Map<String, dynamic> json) {
return OnlineZipformer2CtcModelConfig(
model: json['model'] as String? ?? '',
);
}
@override
String toString() {
return 'OnlineZipformer2CtcModelConfig(model: $model)';
}
Map<String, dynamic> toJson() => {
'model': model,
};
final String model;
}
@@ -63,11 +99,42 @@ class OnlineModelConfig {
this.bpeVocab = '',
});
factory OnlineModelConfig.fromJson(Map<String, dynamic> json) {
return OnlineModelConfig(
transducer: OnlineTransducerModelConfig.fromJson(
json['transducer'] as Map<String, dynamic>? ?? const {}),
paraformer: OnlineParaformerModelConfig.fromJson(
json['paraformer'] as Map<String, dynamic>? ?? const {}),
zipformer2Ctc: OnlineZipformer2CtcModelConfig.fromJson(
json['zipformer2Ctc'] as Map<String, dynamic>? ?? const {}),
tokens: json['tokens'] as String,
numThreads: json['numThreads'] as int? ?? 1,
provider: json['provider'] as String? ?? 'cpu',
debug: json['debug'] as bool? ?? true,
modelType: json['modelType'] as String? ?? '',
modelingUnit: json['modelingUnit'] as String? ?? '',
bpeVocab: json['bpeVocab'] as String? ?? '',
);
}
@override
String toString() {
return 'OnlineModelConfig(transducer: $transducer, paraformer: $paraformer, zipformer2Ctc: $zipformer2Ctc, tokens: $tokens, numThreads: $numThreads, provider: $provider, debug: $debug, modelType: $modelType, modelingUnit: $modelingUnit, bpeVocab: $bpeVocab)';
}
Map<String, dynamic> toJson() => {
'transducer': transducer.toJson(),
'paraformer': paraformer.toJson(),
'zipformer2Ctc': zipformer2Ctc.toJson(),
'tokens': tokens,
'numThreads': numThreads,
'provider': provider,
'debug': debug,
'modelType': modelType,
'modelingUnit': modelingUnit,
'bpeVocab': bpeVocab,
};
final OnlineTransducerModelConfig transducer;
final OnlineParaformerModelConfig paraformer;
final OnlineZipformer2CtcModelConfig zipformer2Ctc;
@@ -90,11 +157,23 @@ class OnlineModelConfig {
class OnlineCtcFstDecoderConfig {
const OnlineCtcFstDecoderConfig({this.graph = '', this.maxActive = 3000});
factory OnlineCtcFstDecoderConfig.fromJson(Map<String, dynamic> json) {
return OnlineCtcFstDecoderConfig(
graph: json['graph'] as String? ?? '',
maxActive: json['maxActive'] as int? ?? 3000,
);
}
@override
String toString() {
return 'OnlineCtcFstDecoderConfig(graph: $graph, maxActive: $maxActive)';
}
Map<String, dynamic> toJson() => {
'graph': graph,
'maxActive': maxActive,
};
final String graph;
final int maxActive;
}
@@ -117,11 +196,52 @@ class OnlineRecognizerConfig {
this.blankPenalty = 0.0,
});
factory OnlineRecognizerConfig.fromJson(Map<String, dynamic> json) {
return OnlineRecognizerConfig(
feat: FeatureConfig.fromJson(
json['feat'] as Map<String, dynamic>? ?? const {}),
model: OnlineModelConfig.fromJson(json['model'] as Map<String, dynamic>),
decodingMethod: json['decodingMethod'] as String? ?? 'greedy_search',
maxActivePaths: json['maxActivePaths'] as int? ?? 4,
enableEndpoint: json['enableEndpoint'] as bool? ?? true,
rule1MinTrailingSilence:
(json['rule1MinTrailingSilence'] as num?)?.toDouble() ?? 2.4,
rule2MinTrailingSilence:
(json['rule2MinTrailingSilence'] as num?)?.toDouble() ?? 1.2,
rule3MinUtteranceLength:
(json['rule3MinUtteranceLength'] as num?)?.toDouble() ?? 20.0,
hotwordsFile: json['hotwordsFile'] as String? ?? '',
hotwordsScore: (json['hotwordsScore'] as num?)?.toDouble() ?? 1.5,
ctcFstDecoderConfig: OnlineCtcFstDecoderConfig.fromJson(
json['ctcFstDecoderConfig'] as Map<String, dynamic>? ?? const {}),
ruleFsts: json['ruleFsts'] as String? ?? '',
ruleFars: json['ruleFars'] as String? ?? '',
blankPenalty: (json['blankPenalty'] as num?)?.toDouble() ?? 0.0,
);
}
@override
String toString() {
return 'OnlineRecognizerConfig(feat: $feat, model: $model, decodingMethod: $decodingMethod, maxActivePaths: $maxActivePaths, enableEndpoint: $enableEndpoint, rule1MinTrailingSilence: $rule1MinTrailingSilence, rule2MinTrailingSilence: $rule2MinTrailingSilence, rule3MinUtteranceLength: $rule3MinUtteranceLength, hotwordsFile: $hotwordsFile, hotwordsScore: $hotwordsScore, ctcFstDecoderConfig: $ctcFstDecoderConfig, ruleFsts: $ruleFsts, ruleFars: $ruleFars, blankPenalty: $blankPenalty)';
}
Map<String, dynamic> toJson() => {
'feat': feat.toJson(),
'model': model.toJson(),
'decodingMethod': decodingMethod,
'maxActivePaths': maxActivePaths,
'enableEndpoint': enableEndpoint,
'rule1MinTrailingSilence': rule1MinTrailingSilence,
'rule2MinTrailingSilence': rule2MinTrailingSilence,
'rule3MinUtteranceLength': rule3MinUtteranceLength,
'hotwordsFile': hotwordsFile,
'hotwordsScore': hotwordsScore,
'ctcFstDecoderConfig': ctcFstDecoderConfig.toJson(),
'ruleFsts': ruleFsts,
'ruleFars': ruleFars,
'blankPenalty': blankPenalty,
};
final FeatureConfig feat;
final OnlineModelConfig model;
final String decodingMethod;
@@ -151,11 +271,27 @@ class OnlineRecognizerResult {
OnlineRecognizerResult(
{required this.text, required this.tokens, required this.timestamps});
factory OnlineRecognizerResult.fromJson(Map<String, dynamic> json) {
return OnlineRecognizerResult(
text: json['text'] as String,
tokens: List<String>.from(json['tokens'] as List),
timestamps: (json['timestamps'] as List)
.map<double>((e) => (e as num).toDouble())
.toList(),
);
}
@override
String toString() {
return 'OnlineRecognizerResult(text: $text, tokens: $tokens, timestamps: $timestamps)';
}
Map<String, dynamic> toJson() => {
'text': text,
'tokens': tokens,
'timestamps': timestamps,
};
final String text;
final List<String> tokens;
final List<double> timestamps;