Eu ainda tinha um problema menor e esqueci de colocar uma resposta quando corrigi-lo. Obrigado e espero que alguém considere útil:
Fala nome artista + álbum + faixa, limpa o texto para não falar coisas desnecessárias:
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()
}
E o script do powershell, caso alguém queira essa solução:
if ($args.count -gt 0)
{
echo $args[0]
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
$speak.Speak($args[0])
}
Você também pode aumentar e diminuir a taxa da voz. Digite $ speak | get-member para obter uma lista de propriedades e métodos depois de adicionar o tipo e criar o objeto:
Rate Property int Rate {get;set;}
Voice Property System.Speech.Synthesis.VoiceInfo Voice {get;}
Volume Property int Volume {get;set;}
SelectVoice Method void SelectVoice(string name)
SelectVoiceByHints Method void SelectVoiceByHints(System.Speech.Synthesis.VoiceGender gender),
$speak.rate = -5
altera a taxa para -5, passa de -10 para 10.
$speak.selectvoicebyhints("female")
muda para a voz feminina dos EUA.