2
2
using System . Text . Json ;
3
3
using System . Text . Json . Nodes ;
4
4
using AssemblyAI . Core ;
5
+ using AssemblyAI . Files ;
6
+
5
7
// ReSharper disable MemberCanBePrivate.Global
6
8
// ReSharper disable UnusedMember.Global
7
9
@@ -22,17 +24,28 @@ internal ExtendedTranscriptsClient(RawClient client, AssemblyAIClient assemblyAI
22
24
23
25
public async Task < Transcript > SubmitAsync ( FileInfo audioFile , TranscriptOptionalParams transcriptParams )
24
26
{
25
- using var audioFileStream = audioFile . OpenRead ( ) ;
26
- return await SubmitAsync ( audioFileStream , transcriptParams ) . ConfigureAwait ( false ) ;
27
+ var uploadedFile = await _assemblyAIClient . Files . UploadAsync ( audioFile ) . ConfigureAwait ( false ) ;
28
+ return await SubmitAsync ( uploadedFile , transcriptParams ) . ConfigureAwait ( false ) ;
27
29
}
28
30
29
31
public Task < Transcript > SubmitAsync ( Stream audioFileStream ) =>
30
32
SubmitAsync ( audioFileStream , new TranscriptOptionalParams ( ) ) ;
31
33
32
- public async Task < Transcript > SubmitAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
34
+ public Task < Transcript > SubmitAsync ( Stream audioFileStream , bool disposeStream ) =>
35
+ SubmitAsync ( audioFileStream , disposeStream , new TranscriptOptionalParams ( ) ) ;
36
+
37
+ public Task < Transcript > SubmitAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
38
+ => SubmitAsync ( audioFileStream , false , transcriptParams ) ;
39
+
40
+ public async Task < Transcript > SubmitAsync (
41
+ Stream audioFileStream ,
42
+ bool disposeStream ,
43
+ TranscriptOptionalParams transcriptParams
44
+ )
33
45
{
34
- var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream ) . ConfigureAwait ( false ) ;
35
- return await SubmitAsync ( new Uri ( fileUpload . UploadUrl ) , transcriptParams ) . ConfigureAwait ( false ) ;
46
+ var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream , disposeStream )
47
+ . ConfigureAwait ( false ) ;
48
+ return await SubmitAsync ( fileUpload , transcriptParams ) . ConfigureAwait ( false ) ;
36
49
}
37
50
38
51
public Task < Transcript > SubmitAsync ( Uri audioFileUrl ) => SubmitAsync ( audioFileUrl , new TranscriptOptionalParams ( ) ) ;
@@ -42,6 +55,13 @@ public async Task<Transcript> SubmitAsync(Uri audioFileUrl, TranscriptOptionalPa
42
55
return await SubmitAsync ( CreateParams ( audioFileUrl , transcriptParams ) ) . ConfigureAwait ( false ) ;
43
56
}
44
57
58
+ public Task < Transcript > SubmitAsync ( UploadedFile file ) => SubmitAsync ( file , new TranscriptOptionalParams ( ) ) ;
59
+
60
+ public async Task < Transcript > SubmitAsync ( UploadedFile file , TranscriptOptionalParams transcriptParams )
61
+ {
62
+ return await SubmitAsync ( CreateParams ( file . UploadUrl , transcriptParams ) ) . ConfigureAwait ( false ) ;
63
+ }
64
+
45
65
public Task < Transcript > TranscribeAsync ( FileInfo audioFile ) =>
46
66
TranscribeAsync ( audioFile , new TranscriptOptionalParams ( ) ) ;
47
67
@@ -54,18 +74,35 @@ public async Task<Transcript> TranscribeAsync(FileInfo audioFile, TranscriptOpti
54
74
public Task < Transcript > TranscribeAsync ( Stream audioFileStream ) =>
55
75
TranscribeAsync ( audioFileStream , new TranscriptOptionalParams ( ) ) ;
56
76
77
+ public Task < Transcript > TranscribeAsync ( Stream audioFileStream , bool disposeStream ) =>
78
+ TranscribeAsync ( audioFileStream , disposeStream , new TranscriptOptionalParams ( ) ) ;
79
+
57
80
public async Task < Transcript > TranscribeAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
58
81
{
59
82
var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream ) . ConfigureAwait ( false ) ;
60
83
return await TranscribeAsync ( new Uri ( fileUpload . UploadUrl ) , transcriptParams ) . ConfigureAwait ( false ) ;
61
84
}
62
85
86
+ public async Task < Transcript > TranscribeAsync ( Stream audioFileStream , bool disposeStream ,
87
+ TranscriptOptionalParams transcriptParams )
88
+ {
89
+ var uploadedFile =
90
+ await _assemblyAIClient . Files . UploadAsync ( audioFileStream , disposeStream ) . ConfigureAwait ( false ) ;
91
+ return await TranscribeAsync ( uploadedFile , transcriptParams ) . ConfigureAwait ( false ) ;
92
+ }
93
+
63
94
public Task < Transcript > TranscribeAsync ( Uri audioFileUrl ) =>
64
95
TranscribeAsync ( audioFileUrl , new TranscriptOptionalParams ( ) ) ;
65
96
66
97
public Task < Transcript > TranscribeAsync ( Uri audioFileUrl , TranscriptOptionalParams transcriptParams )
67
98
=> TranscribeAsync ( CreateParams ( audioFileUrl , transcriptParams ) ) ;
68
99
100
+ public Task < Transcript > TranscribeAsync ( UploadedFile file ) =>
101
+ TranscribeAsync ( file , new TranscriptOptionalParams ( ) ) ;
102
+
103
+ public Task < Transcript > TranscribeAsync ( UploadedFile file , TranscriptOptionalParams transcriptParams )
104
+ => TranscribeAsync ( CreateParams ( file . UploadUrl , transcriptParams ) ) ;
105
+
69
106
public async Task < Transcript > TranscribeAsync ( TranscriptParams transcriptParams )
70
107
{
71
108
var transcript = await SubmitAsync ( transcriptParams ) . ConfigureAwait ( false ) ;
@@ -114,10 +151,13 @@ public async Task<Transcript> WaitUntilReady(
114
151
}
115
152
116
153
private static TranscriptParams CreateParams ( Uri audioFileUrl , TranscriptOptionalParams optionalTranscriptParams )
154
+ => CreateParams ( audioFileUrl . ToString ( ) , optionalTranscriptParams ) ;
155
+
156
+ private static TranscriptParams CreateParams ( string audioFileUrl , TranscriptOptionalParams optionalTranscriptParams )
117
157
{
118
158
var json = JsonUtils . Serialize ( optionalTranscriptParams ) ;
119
159
var jsonObject = JsonUtils . Deserialize < JsonObject > ( json ) ;
120
- jsonObject [ "audio_url" ] = audioFileUrl . ToString ( ) ;
160
+ jsonObject [ "audio_url" ] = audioFileUrl ;
121
161
var transcriptParams = jsonObject . Deserialize < TranscriptParams > ( ) ! ;
122
162
return transcriptParams ;
123
163
}
0 commit comments