我正在尝试处理纯文本文件,以使用Azure认知服务文本到语音REST API和Powershell创建wav音频文件。我不明白如何做到这一点,而不是直接将内容(特别是在$Content
)添加到脚本中,以及如何在此过程中使用自定义词典。为了简化,我删除了部分脚本(auth)。谢谢。
$AudioOutputType='audio-24khz-96kbitrate-mono-mp3'
$XSearchAppID='000000000000000000000'
$XSearchClientID='00000000000000000000000'
$UserAgent='PowerShellTextToSpeechApp'
$Header=@{ `
'Content-Type' = 'application/ssml+xml'; `
'X-Microsoft-OutputFormat' = $AudioOutputType; `
'X-Search-AppId' = $XSearchAppId; `
'X-Search-ClientId' = $XSearchClientId; `
'Authorization' = $AccessToken `
}
$Locale='es-MX'
$ServiceNameMapping='Microsoft Server Speech Text to Speech Voice (es-MX, DaliaNeural)'
$Content='pathTest.txt'
$Body=''+$Content+''
$Endpoint= 'https://speech.platform.bing.com/synthesize'
$Method='POST'
$ContentType='application/ssml+xml'
$Filename='output.wav'
Invoke-RestMethod -Uri $Endpoint -Method $Method `
-Headers $Headers -ContentType $ContentType `
-Body $Body -UserAgent $UserAgent `
-OutFile $Filename
谢谢!
我很难找到您正在使用的确切API文档,但基于我在以下Azure Cog中找到的内容。服务文档…
如何从文本合成语音
部署和使用您的语音模型
您可能能够将XML格式(它似乎需要在API REST请求的Body中)和文本文件内容拼凑在一起。也许像这样来获取$Content变量。
$xmlStart = @'
<speak version="1.0" xml:lang="en-US">
<voice xml:lang="en-US" xml:gender="Female" name="en-US-JennyNeural">
'@
$Content = Get-Content -Path [Path to your text file]
$xmlEnd = @'
</voice>
</speak>
'@
$ContentToSpeak = $xmlStart + $Content + $xmlEnd
我还没有使用过Azure认知文本到语音,所以这只是一个最好的猜测,不知道你选择的API文档。
编辑:我想我找到了。看来你是在这里找到你的文档的。
Windows PowerShell和文本到语音的REST API(第3部分)
这是第4部分的XML内容。
Windows PowerShell和文本到语音的REST API(第4部分)