Как сохранить вывод Powershell в файл, когда я создаю голосовое аудио syntheti c с Text-to-Speech, используя командную строку - PullRequest
0 голосов
/ 17 февраля 2020

Пожалуйста, научите меня, как заставить Powershell автоматически сохранять вывод tts в файл TEXT, так как я получаю только длинную строку, подобную этой:

{"audioContent": "// NExAAQ4oIMABhEuDRESizqE7uehfMY8A .... .......

Мне нужно обработать более 1400 файлов :( что делать? Также есть способ загрузки текста длиной более 5000 символов? Также возможно автоматическое создание SSML из HTML?

Я сделал все, как описано в этом Документе

1 Ответ

1 голос
/ 18 февраля 2020

Я все еще не совсем уверен, что вы имеете в виду здесь. Вы говорите, что у вас есть много текстовых файлов, которые теперь имеют содержимое { "audioContent": "//NExAAQ4oIMABhEuDRESizqE7uehfMY8A..........., и вам нужно заменить это содержимое только частью в фигурных скобках?

Если это так, вы можете сделать

Get-ChildItem -Path 'ThePathToLookForTheFiles' -File | ForEach-Object {
    $_ | Set-Content -Value (($_ | Get-Content -Raw) -replace '^\{\s*"audioContent":\s*"([^}]+)\}', '$1')
}

Для любого нового текстового файла измените код с здесь немного, захватив результат из Invoke-WebRequest и сохранение свойства audioContent в текстовом файле:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

$params = @{
    Method      = 'POST'
    Headers     = $headers
    ContentType = "application/json; charset=utf-8"
    InFile      = 'request.json'
    Uri         = "https://texttospeech.googleapis.com/v1/text:synthesize"
}

$content = Invoke-WebRequest @params | Select-Object -Expand Content
# save the textfile with just the base64 string:
Set-Content -Path 'TheFullPathAndFileName' -Value $content.audioContent

Надеюсь, это поможет

...