Skip to content

Commit 69e0703

Browse files
committed
Fix bug of KnownSpeakerReferences in Request-AudioTranscription
1 parent e256efc commit 69e0703

3 files changed

Lines changed: 31 additions & 11 deletions

File tree

Private/Convert-ImageToDataURL.ps1

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,17 @@ function Get-MimeTypeFromFile {
7373
'.tex' { 'text/x-tex'; continue }
7474
'.ts' { 'application/typescript'; continue }
7575
'.txt' { 'text/plain'; continue }
76-
Default { $DefaultMimeType }
76+
'.xml' { 'application/xml'; continue }
77+
'.aac' { 'audio/aac'; continue }
78+
'.mp3' { 'audio/mpeg'; continue }
79+
'.m4a' { 'audio/mp4'; continue }
80+
'.flac' { 'audio/flac'; continue }
81+
'.wav' { 'audio/wav'; continue }
82+
'.oga' { 'audio/ogg'; continue }
83+
'.ogg' { 'audio/ogg'; continue }
84+
'.opus' { 'audio/opus'; continue }
85+
'.weba' { 'audio/webm'; continue }
86+
'.mp4' { 'application/mp4'; continue }
87+
default { $DefaultMimeType }
7788
}
7889
}

Private/New-MultipartFormContent.ps1

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,45 @@ function New-MultipartFormContent {
2222
$Boundary = New-MultipartFormBoundary
2323
}
2424
$Boundary = '--' + $Boundary
25+
$script:InternalBoundary = $Utf8Enc.GetBytes($Boundary)
2526

2627
#Contents
2728
foreach ($formEntry in $FormData.GetEnumerator()) {
28-
$script:FormContent.AddRange($Utf8Enc.GetBytes($Boundary))
29-
$script:FormContent.AddRange($Utf8Enc.GetBytes("`r`n"))
3029
AddMultipartContent -fieldName $formEntry.Key -fieldValue $formEntry.Value -enumerate $true
3130
}
3231

3332
#End boundary
34-
$script:FormContent.AddRange($Utf8Enc.GetBytes(($Boundary + '--')))
33+
$script:FormContent.AddRange($script:InternalBoundary)
34+
$script:FormContent.AddRange([byte[]](45, 45)) # '--'
3535

3636
#Output as [byte[]]
3737
Write-Output (, $script:FormContent.ToArray())
3838
}
3939

40+
function AddMultipartBoundary {
41+
$script:FormContent.AddRange($script:InternalBoundary)
42+
$script:FormContent.AddRange([byte[]](13, 10)) # "`r`n"
43+
}
44+
4045
function AddMultipartContent {
4146
[OutputType([void])]
42-
Param(
47+
param(
4348
[object]$fieldName,
4449
[object]$fieldValue,
4550
[bool]$enumerate
4651
)
4752

4853
if ($fieldValue -is [FileInfo]) {
54+
AddMultipartBoundary
4955
$script:FormContent.AddRange((GetMultipartFileContent -fieldName $fieldName -file $fieldValue))
5056
}
5157
elseif (-not $enumerate -or $fieldValue -is [string] -or $fieldValue -isnot [IEnumerable]) {
58+
AddMultipartBoundary
5259
$script:FormContent.AddRange((GetMultipartStringContent -fieldName $fieldName -fieldValue $fieldValue))
5360
return
5461
}
5562
elseif ($fieldValue -is [IDictionary] -and $fieldValue.Type -eq 'bytes') {
63+
AddMultipartBoundary
5664
$script:FormContent.AddRange((GetMultipartBytesContent -fieldName $fieldName -content $fieldValue.Content -fileName $fieldValue.FileName))
5765
}
5866
elseif ($enumerate -and $fieldValue -is [IEnumerable]) {
@@ -92,7 +100,7 @@ function GetMultipartStringContent {
92100
[List[byte]]$result = [List[byte]]::new()
93101
$result.AddRange($Utf8Enc.GetBytes($header))
94102
$result.AddRange($Utf8Enc.GetBytes($fieldValue))
95-
$result.AddRange($Utf8Enc.GetBytes("`r`n"))
103+
$result.AddRange([byte[]](13, 10)) # "`r`n"
96104
return , $result
97105
}
98106

@@ -119,6 +127,6 @@ function GetMultipartBytesContent {
119127
[List[byte]]$result = [List[byte]]::new()
120128
$result.AddRange($Utf8Enc.GetBytes($header))
121129
$result.AddRange($content)
122-
$result.AddRange($Utf8Enc.GetBytes("`r`n"))
130+
$result.AddRange([byte[]](13, 10)) # "`r`n"
123131
return , $result
124132
}

Public/Audio/Request-AudioTranscription.ps1

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,13 @@ function Request-AudioTranscription {
152152
$PostBody.'known_speaker_names[]' = $KnownSpeakerNames
153153
}
154154
if ($PSBoundParameters.ContainsKey('KnownSpeakerReferences')) {
155-
$KnownSpeakerReferencesFileInfoList = @()
155+
$KnownSpeakerReferencesDataList = @()
156156
foreach ($ref in $KnownSpeakerReferences) {
157-
$KnownSpeakerReferencesFileInfoList += Resolve-FileInfo $ref
157+
$KnownSpeakerReferencesDataList += Convert-FileToDataURL $ref
158158
}
159-
if ($KnownSpeakerReferencesFileInfoList.Count -gt 0) {
160-
$PostBody.'known_speaker_references[]' = $KnownSpeakerReferencesFileInfoList
159+
if ($KnownSpeakerReferencesDataList.Count -gt 0) {
160+
$PostBody.'known_speaker_references[]' = $KnownSpeakerReferencesDataList
161+
$KnownSpeakerReferencesDataList = $null
161162
}
162163
}
163164

0 commit comments

Comments
 (0)