Skip to content

Commit

Permalink
Flutter Config toJson/fromJson
Browse files Browse the repository at this point in the history
  • Loading branch information
Dokotela committed Feb 18, 2025
1 parent 654d228 commit d00cad8
Show file tree
Hide file tree
Showing 11 changed files with 817 additions and 17 deletions.
64 changes: 64 additions & 0 deletions flutter/sherpa_onnx/lib/src/audio_tagging.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,24 @@ import './sherpa_onnx_bindings.dart';
class OfflineZipformerAudioTaggingModelConfig {
const OfflineZipformerAudioTaggingModelConfig({this.model = ''});

factory OfflineZipformerAudioTaggingModelConfig.fromJson(
Map<String, dynamic> map) {
return OfflineZipformerAudioTaggingModelConfig(
model: map['model'] ?? '',
);
}

@override
String toString() {
return 'OfflineZipformerAudioTaggingModelConfig(model: $model)';
}

Map<String, dynamic> toJson() {
return {
'model': model,
};
}

final String model;
}

Expand All @@ -24,11 +37,32 @@ class AudioTaggingModelConfig {
this.provider = 'cpu',
this.debug = true});

factory AudioTaggingModelConfig.fromJson(Map<String, dynamic> map) {
return AudioTaggingModelConfig(
zipformer:
OfflineZipformerAudioTaggingModelConfig.fromJson(map['zipformer']),
ced: map['ced'] ?? '',
numThreads: map['numThreads'] ?? 1,
provider: map['provider'] ?? 'cpu',
debug: map['debug'] ?? true,
);
}

@override
String toString() {
return 'AudioTaggingModelConfig(zipformer: $zipformer, ced: $ced, numThreads: $numThreads, provider: $provider, debug: $debug)';
}

Map<String, dynamic> toJson() {
return {
'zipformer': zipformer.toJson(),
'ced': ced,
'numThreads': numThreads,
'provider': provider,
'debug': debug,
};
}

final OfflineZipformerAudioTaggingModelConfig zipformer;
final String ced;
final int numThreads;
Expand All @@ -39,23 +73,53 @@ class AudioTaggingModelConfig {
class AudioTaggingConfig {
AudioTaggingConfig({required this.model, this.labels = ''});

factory AudioTaggingConfig.fromJson(Map<String, dynamic> map) {
return AudioTaggingConfig(
model: AudioTaggingModelConfig.fromJson(map['model']),
labels: map['labels'] ?? '',
);
}

@override
String toString() {
return 'AudioTaggingConfig(model: $model, labels: $labels)';
}

Map<String, dynamic> toJson() {
return {
'model': model.toJson(),
'labels': labels,
};
}

final AudioTaggingModelConfig model;
final String labels;
}

class AudioEvent {
AudioEvent({required this.name, required this.index, required this.prob});

factory AudioEvent.fromJson(Map<String, dynamic> map) {
return AudioEvent(
name: map['name'],
index: map['index'],
prob: map['prob'],
);
}

@override
String toString() {
return 'AudioEvent(name: $name, index: $index, prob: $prob)';
}

Map<String, dynamic> toJson() {
return {
'name': name,
'index': index,
'prob': prob,
};
}

final String name;
final int index;
final double prob;
Expand Down
12 changes: 12 additions & 0 deletions flutter/sherpa_onnx/lib/src/feature_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,23 @@
class FeatureConfig {
const FeatureConfig({this.sampleRate = 16000, this.featureDim = 80});

factory FeatureConfig.fromJson(Map<String, dynamic> json) {
return FeatureConfig(
sampleRate: json['sampleRate'] as int? ?? 16000,
featureDim: json['featureDim'] as int? ?? 80,
);
}

@override
String toString() {
return 'FeatureConfig(sampleRate: $sampleRate, featureDim: $featureDim)';
}

Map<String, dynamic> toJson() => {
'sampleRate': sampleRate,
'featureDim': featureDim,
};

final int sampleRate;
final int featureDim;
}
39 changes: 39 additions & 0 deletions flutter/sherpa_onnx/lib/src/keyword_spotter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,40 @@ class KeywordSpotterConfig {
this.keywordsBufSize = 0,
});

factory KeywordSpotterConfig.fromJson(Map<String, dynamic> json) {
return KeywordSpotterConfig(
feat: json['feat'] != null
? FeatureConfig.fromJson(json['feat'] as Map<String, dynamic>)
: const FeatureConfig(),
model: OnlineModelConfig.fromJson(json['model'] as Map<String, dynamic>),
maxActivePaths: json['maxActivePaths'] as int? ?? 4,
numTrailingBlanks: json['numTrailingBlanks'] as int? ?? 1,
keywordsScore: (json['keywordsScore'] as num?)?.toDouble() ?? 1.0,
keywordsThreshold:
(json['keywordsThreshold'] as num?)?.toDouble() ?? 0.25,
keywordsFile: json['keywordsFile'] as String? ?? '',
keywordsBuf: json['keywordsBuf'] as String? ?? '',
keywordsBufSize: json['keywordsBufSize'] as int? ?? 0,
);
}

@override
String toString() {
return 'KeywordSpotterConfig(feat: $feat, model: $model, maxActivePaths: $maxActivePaths, numTrailingBlanks: $numTrailingBlanks, keywordsScore: $keywordsScore, keywordsThreshold: $keywordsThreshold, keywordsFile: $keywordsFile, keywordsBuf: $keywordsBuf, keywordsBufSize: $keywordsBufSize)';
}

Map<String, dynamic> toJson() => {
'feat': feat.toJson(),
'model': model.toJson(),
'maxActivePaths': maxActivePaths,
'numTrailingBlanks': numTrailingBlanks,
'keywordsScore': keywordsScore,
'keywordsThreshold': keywordsThreshold,
'keywordsFile': keywordsFile,
'keywordsBuf': keywordsBuf,
'keywordsBufSize': keywordsBufSize,
};

final FeatureConfig feat;
final OnlineModelConfig model;

Expand All @@ -44,11 +73,21 @@ class KeywordSpotterConfig {
class KeywordResult {
KeywordResult({required this.keyword});

factory KeywordResult.fromJson(Map<String, dynamic> json) {
return KeywordResult(
keyword: json['keyword'] as String? ?? '',
);
}

@override
String toString() {
return 'KeywordResult(keyword: $keyword)';
}

Map<String, dynamic> toJson() => {
'keyword': keyword,
};

final String keyword;
}

Expand Down
27 changes: 27 additions & 0 deletions flutter/sherpa_onnx/lib/src/offline_punctuation.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,27 @@ class OfflinePunctuationModelConfig {
this.provider = 'cpu',
this.debug = true});

factory OfflinePunctuationModelConfig.fromJson(Map<String, dynamic> json) {
return OfflinePunctuationModelConfig(
ctTransformer: json['ctTransformer'] as String,
numThreads: json['numThreads'] as int? ?? 1,
provider: json['provider'] as String? ?? 'cpu',
debug: json['debug'] as bool? ?? true,
);
}

@override
String toString() {
return 'OfflinePunctuationModelConfig(ctTransformer: $ctTransformer, numThreads: $numThreads, provider: $provider, debug: $debug)';
}

Map<String, dynamic> toJson() => {
'ctTransformer': ctTransformer,
'numThreads': numThreads,
'provider': provider,
'debug': debug,
};

final String ctTransformer;
final int numThreads;
final String provider;
Expand All @@ -27,11 +43,22 @@ class OfflinePunctuationConfig {
required this.model,
});

factory OfflinePunctuationConfig.fromJson(Map<String, dynamic> json) {
return OfflinePunctuationConfig(
model: OfflinePunctuationModelConfig.fromJson(
json['model'] as Map<String, dynamic>),
);
}

@override
String toString() {
return 'OfflinePunctuationConfig(model: $model)';
}

Map<String, dynamic> toJson() => {
'model': model.toJson(),
};

final OfflinePunctuationModelConfig model;
}

Expand Down
Loading

0 comments on commit d00cad8

Please sign in to comment.