Получить имя дорожки в foobar с панелью WSH

Я хочу иметь что-то, что говорит имя текущего воспроизведения трека в foobar, лучшее, что я мог придумать, это использование WSH Panel для запуска сценария powershell text to speech, однако я не могу получить имя трека в WSH Panel..my WSH Panel script выглядит так:

function on_playback_starting(cmd, is_paused) {

var track_path = fb.TitleFormat("%title%");
WSH = new ActiveXObject("WScript.Shell");

WSH.run("powershell.exe -noexit -ExecutionPolicy ByPass -f c:usersjrg26documentswindowspowershelltext2speech.ps1 "test " + track_path+" test part 2"");
}

Он говорит тест "тест" и "тест часть 2", но не имя трека. Он даже не передает его, так как у меня есть сценарий, настроенный на Эхо-Аргументы, и он просто отображает "тестовую часть 2" для каждого песня. Итак, как я передаю название трека так, как я пытаюсь?

14
задан nixda
29.11.2022 21:37 Количество просмотров материала 3437
Распечатать страницу

1 ответ

у меня все еще была небольшая проблема, и я забыл поставить ответ, когда я его исправил. Спасибо и я надеюсь, что кто-то может найти это полезным:

говорит исполнитель + альбом + название трека, очищает текст, так что не будет говорить ненужные вещи:

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 {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

изменяет ставку на -5, идет от -10 до 10.

$speak.selectvoicebyhints("female")

изменения в женском голосе США.

1
отвечен jamesg76 2022-12-01 05:25

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх