У меня все еще была небольшая проблема, и я забыл поставить ответ, когда исправил ее. Спасибо, и я надеюсь, что кто-то может найти это полезным:
Говорит артист + альбом + название трека, очищает текст, чтобы он не говорил ненужных вещей:
function replace_it(str) { str = str.replace(",","(") str = str.replace("-","(") str = str.replace(")","(") str = str.replace("[","(") str = str.replace("]","(") str = str.replace("\\","(") str = str.replace("/","(") str = str.replace(":","(") var str_index = str.indexOf("(") if (str_index != -1) { str = str.substring(0,str_index) } return str } function on_playback_new_track(metadb) { WSH = new ActiveXObject("WScript.Shell"); var artist = fb.TitleFormat("%artist%").Eval(true) var album = fb.TitleFormat("%album%").Eval(true) var track_name = fb.TitleFormat("%Title%").Eval(true); artist = replace_it(artist) album = replace_it(album) track_name = replace_it(track_name) track_path="Artist "+artist+" Album " +album+" track name "+ track_name fb.Pause() WSH.run("powershell.exe -nologo -NonInteractive -ExecutionPolicy ByPass -WindowStyle Hidden -f c:\\users\\jrg26\\documents\\windowspowershell\\text2speech.ps1 \"" + track_path + "\"",0,true); fb.play() }
И сценарий powershell, на случай, если кто-нибудь захочет это решение:
if ($args.count -gt 0) { echo $args[0] Add-Type -AssemblyName System.speech $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer $speak.Speak($args[0]) }
Вы также можете увеличивать и понижать скорость голоса. Введите $ speak | get-member, чтобы получить список свойств и методов после добавления типа и создания объекта:
Rate Property int Rate Voice Property System.Speech.Synthesis.VoiceInfo Voice Volume Property int Volume SelectVoice Method void SelectVoice(string name) SelectVoiceByHints Method void SelectVoiceByHints(System.Speech.Synthesis.VoiceGender gender), $speak.rate = -5
меняет скорость до -5, идет от -10 до 10.
$speak.selectvoicebyhints("female")
меняет женский голос в США.