Skip to content

Commit 6247915

Browse files
committed
Supertonic Example
1 parent 454d0f5 commit 6247915

File tree

11 files changed

+491
-75
lines changed

11 files changed

+491
-75
lines changed

Examples/TensorStack.Example.TextGeneration/Common/TextModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public enum TextModelType
2121
{
2222
Summary = 0,
2323
Phi3 = 1,
24-
Whisper = 2
24+
Whisper = 2,
25+
Supertonic = 3
2526
}
2627
}

Examples/TensorStack.Example.TextGeneration/Services/TextService.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using TensorStack.Providers;
1111
using TensorStack.TextGeneration.Pipelines.Whisper;
1212
using TensorStack.Common.Tensor;
13+
using TensorStack.TextGeneration.Pipelines.Supertonic;
1314

1415
namespace TensorStack.Example.Services
1516
{
@@ -101,6 +102,10 @@ public async Task LoadAsync(TextModel model, Device device)
101102

102103
_currentPipeline = WhisperPipeline.Create(provider, providerCPU, model.Path, whisperType);
103104
}
105+
else if (model.Type == TextModelType.Supertonic)
106+
{
107+
_currentPipeline = SupertonicPipeline.Create(model.Path, provider);
108+
}
104109
await Task.Run(() => _currentPipeline.LoadAsync(cancellationToken), cancellationToken);
105110

106111
}
@@ -221,6 +226,33 @@ public async Task<GenerateResult[]> ExecuteAsync(WhisperRequest options)
221226
}
222227

223228

229+
public async Task<AudioTensor> ExecuteAsync(SupertonicRequest options)
230+
{
231+
try
232+
{
233+
IsExecuting = true;
234+
using (_cancellationTokenSource = new CancellationTokenSource())
235+
{
236+
var pipeline = _currentPipeline as IPipeline<AudioTensor, SupertonicOptions, GenerateProgress>;
237+
var pipelineOptions = new SupertonicOptions
238+
{
239+
TextInput = options.InputText,
240+
VoiceStyle = options.VoiceStyle,
241+
Steps = options.Steps,
242+
Speed = options.Speed,
243+
SilenceDuration = options.SilenceDuration,
244+
Seed = options.Seed,
245+
};
246+
247+
return await pipeline.RunAsync(pipelineOptions, cancellationToken: _cancellationTokenSource.Token);
248+
}
249+
}
250+
finally
251+
{
252+
IsExecuting = false;
253+
}
254+
}
255+
224256

225257
/// <summary>
226258
/// Cancel the running task (Load or Execute)
@@ -263,6 +295,7 @@ public interface ITextService
263295
Task CancelAsync();
264296
Task<GenerateResult[]> ExecuteAsync(TextRequest options);
265297
Task<GenerateResult[]> ExecuteAsync(WhisperRequest options);
298+
Task<AudioTensor> ExecuteAsync(SupertonicRequest options);
266299
}
267300

268301

@@ -282,11 +315,22 @@ public record TextRequest : ITransformerRequest
282315
public int DiversityLength { get; set; } = 5;
283316
}
284317

318+
285319
public record WhisperRequest : TextRequest
286320
{
287321
public AudioTensor AudioInput { get; set; }
288322
public LanguageType Language { get; set; } = LanguageType.EN;
289323
public TaskType Task { get; set; } = TaskType.Transcribe;
290324
}
291325

326+
327+
public record SupertonicRequest
328+
{
329+
public string InputText { get; set; }
330+
public string VoiceStyle { get; set; }
331+
public int Steps { get; set; } = 5;
332+
public float Speed { get; set; } = 1f;
333+
public float SilenceDuration { get; set; } = 0.3f;
334+
public int Seed { get; set; }
335+
}
292336
}

Examples/TensorStack.Example.TextGeneration/Settings.json

Lines changed: 64 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
11
{
22
"DirectoryTemp": "Temp",
3-
"TextToTextModels": [
4-
{
3+
"TextToTextModels": [{
54
"Id": 1,
65
"Name": "Text Summary",
76
"IsDefault": true,
87
"Type": "Summary",
98
"MinLength": 20,
109
"MaxLength": 512,
1110
"Prefixes": [ "summarize: ", "translate English to German: ", "translate English to French: ", "translate English to Romanian: " ],
12-
"Path": "Models\\TextGeneration\\TextSummary",
11+
"Path": "Models\\TextSummary",
1312
"UrlPaths": [
14-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/TextSummary/config.json?download=true",
15-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/TextSummary/decoder_model_merged.onnx?download=true",
16-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/TextSummary/encoder_model.onnx?download=true",
17-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/TextSummary/spiece.model?download=true",
18-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/TextSummary/tokenizer.json?download=true"
13+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/TextSummary/config.json?download=true",
14+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/TextSummary/decoder_model_merged.onnx?download=true",
15+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/TextSummary/encoder_model.onnx?download=true",
16+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/TextSummary/spiece.model?download=true",
17+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/TextSummary/tokenizer.json?download=true"
1918
]
2019
}
2120
],
22-
"TextToAudioModels": [
23-
24-
],
25-
"AudioToTextModels":[ {
21+
"AudioToTextModels":[{
2622
"Id": 1,
2723
"Name": "Whisper-Tiny",
2824
"IsDefault": true,
@@ -31,90 +27,107 @@
3127
"MinLength": 20,
3228
"MaxLength": 512,
3329
"Prefixes": [ "Transcribe", "Translate" ],
34-
"Path": "Models\\TextGeneration\\Whisper-Tiny",
30+
"Path": "Models\\Whisper-Tiny",
3531
"UrlPaths": [
36-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/decoder_model_merged.onnx?download=true",
37-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/encoder_model.onnx?download=true",
38-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/merges.txt?download=true",
39-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/tokenizer_config.json?download=true",
40-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/vocab.json?download=true",
41-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/mel_filters.npz?download=true"
32+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/decoder_model_merged.onnx?download=true",
33+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/encoder_model.onnx?download=true",
34+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/merges.txt?download=true",
35+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/tokenizer_config.json?download=true",
36+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/vocab.json?download=true",
37+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/mel_filters.npz?download=true"
4238
]
4339
},
4440
{
4541
"Id": 2,
4642
"Name": "Whisper-Small",
47-
"IsDefault": true,
4843
"Type": "Whisper",
4944
"Version": "Small",
5045
"MinLength": 20,
5146
"MaxLength": 512,
5247
"Prefixes": [ "Transcribe", "Translate" ],
53-
"Path": "Models\\TextGeneration\\Whisper-Small",
48+
"Path": "Models\\Whisper-Small",
5449
"UrlPaths": [
55-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/decoder_model_merged.onnx?download=true",
56-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/encoder_model.onnx?download=true",
57-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/merges.txt?download=true",
58-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/tokenizer_config.json?download=true",
59-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/vocab.json?download=true",
60-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/mel_filters.npz?download=true"
50+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/decoder_model_merged.onnx?download=true",
51+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/encoder_model.onnx?download=true",
52+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/merges.txt?download=true",
53+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/tokenizer_config.json?download=true",
54+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/vocab.json?download=true",
55+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/mel_filters.npz?download=true"
6156
]
6257
},
6358
{
6459
"Id": 3,
6560
"Name": "Whisper-Medium",
66-
"IsDefault": true,
6761
"Type": "Whisper",
6862
"Version": "Medium",
6963
"MinLength": 20,
7064
"MaxLength": 512,
7165
"Prefixes": [ "Transcribe", "Translate" ],
72-
"Path": "Models\\TextGeneration\\Whisper-Medium",
66+
"Path": "Models\\Whisper-Medium",
7367
"UrlPaths": [
74-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/decoder_model_merged.onnx?download=true",
75-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/encoder_model.onnx?download=true",
76-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/merges.txt?download=true",
77-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/tokenizer_config.json?download=true",
78-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/vocab.json?download=true",
79-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/mel_filters.npz?download=true"
68+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/decoder_model_merged.onnx?download=true",
69+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/encoder_model.onnx?download=true",
70+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/merges.txt?download=true",
71+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/tokenizer_config.json?download=true",
72+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/vocab.json?download=true",
73+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/mel_filters.npz?download=true"
8074
]
8175
},
8276
{
8377
"Id": 4,
8478
"Name": "Whisper-Base",
85-
"IsDefault": true,
8679
"Type": "Whisper",
8780
"Version": "Base",
8881
"MinLength": 20,
8982
"MaxLength": 512,
9083
"Prefixes": [ "Transcribe", "Translate" ],
91-
"Path": "Models\\TextGeneration\\Whisper-Base",
84+
"Path": "Models\\Whisper-Base",
9285
"UrlPaths": [
93-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/decoder_model_merged.onnx?download=true",
94-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/encoder_model.onnx?download=true",
95-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/merges.txt?download=true",
96-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/tokenizer_config.json?download=true",
97-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/vocab.json?download=true",
98-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/mel_filters.npz?download=true"
86+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/decoder_model_merged.onnx?download=true",
87+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/encoder_model.onnx?download=true",
88+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/merges.txt?download=true",
89+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/tokenizer_config.json?download=true",
90+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/vocab.json?download=true",
91+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/mel_filters.npz?download=true"
9992
]
10093
},
10194
{
10295
"Id": 5,
10396
"Name": "Whisper-Large",
104-
"IsDefault": true,
10597
"Type": "Whisper",
10698
"Version": "Large",
10799
"MinLength": 20,
108100
"MaxLength": 512,
109101
"Prefixes": [ "Transcribe", "Translate" ],
110-
"Path": "Models\\TextGeneration\\Whisper-Large",
102+
"Path": "Models\\Whisper-Large",
103+
"UrlPaths": [
104+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/decoder_model_merged.onnx?download=true",
105+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/encoder_model.onnx?download=true",
106+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/merges.txt?download=true",
107+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/tokenizer_config.json?download=true",
108+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/vocab.json?download=true",
109+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Whisper-Small/mel_filters.npz?download=true"
110+
]
111+
}
112+
],
113+
"TextToAudioModels": [{
114+
"Id": 1,
115+
"Name": "Supertonic",
116+
"IsDefault": true,
117+
"Type": "Supertonic",
118+
"MaxLength": 512,
119+
"Prefixes": [ "Female1","Male1", "Female2", "Male2" ],
120+
"Path": "Models\\Supertonic",
111121
"UrlPaths": [
112-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/decoder_model_merged.onnx?download=true",
113-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/encoder_model.onnx?download=true",
114-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/merges.txt?download=true",
115-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/tokenizer_config.json?download=true",
116-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/vocab.json?download=true",
117-
"https://huggingface.co/TensorStack/TensorStack/resolve/main/TextGeneration/Whisper-Small/mel_filters.npz?download=true"
122+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/duration_predictor.onnx?download=true",
123+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/text_encoder.onnx?download=true",
124+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/unicode_indexer.json?download=true",
125+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/vector_estimator.onnx?download=true",
126+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/vocoder.onnx?download=true",
127+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/voice_styles/Female1.json?download=true",
128+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/voice_styles/Female2.json?download=true",
129+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/voice_styles/Male1.json?download=true",
130+
"https://huggingface.co/saddam213/DemoApp/resolve/main/Text/Supertonic/voice_styles/Male2.json?download=true"
118131
]
119132
}
120133
]

Examples/TensorStack.Example.TextGeneration/Views/SummaryView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
<!--Execute/Cancel-->
114114
<UniformGrid DockPanel.Dock="Bottom" Columns="2" Height="30">
115115
<Button Content="Cancel" Command="{Binding CancelCommand}" />
116-
<Button Content="Summarize" Command="{Binding ExecuteCommand}" />
116+
<Button Content="Execute" Command="{Binding ExecuteCommand}" />
117117
</UniformGrid>
118118

119119
</DockPanel>

0 commit comments

Comments
 (0)