Начнем с того что в 11 вин есть такое явление как natural voice. Это те же встроенные sapi, но обработка происходит онлайн.
Изначально была идея подтянуть озвучку через Balabolka, а точнее через её консольную версию balcon, но позднее разобрался как припаять возможность использования дополнительных sapi через этот модуль.
Добавить в систем дополнительные голоса можно по инструкции той же балаболки: https://www.cross-plus-a.com/ru/balabolka.html Там все банально: две кнопки и редактор списка голосов.
Однако наш модуль подтягивает только голос выбранный в системе, а система не выводит ничего кроме своих родимых голосов. Через реестр это не решается т.к. токены натуральных голосов и стандартных отличаются.
В коде модуля видим что он подтягивает три файла скрипта из папки: .\majordomo\htdocs\rc исходя из условий генерации: sapi_cach_only.js , sapi_cachd.js , sapi.js
Во всех файлах ищем строчку
Код: Выделить всё
var sv = WScript.CreateObject("SAPI.SpVoice");
Код: Выделить всё
var sv = WScript.CreateObject("SAPI.SpVoice");
var voices = sv.GetVoices();
for (var i = 0; i < voices.Count; i++) {
WScript.Echo(voices.Item(i).GetDescription());
}
sv.Voice = voices.Item(0);
Код: Выделить всё
SpVoice := ComObjCreate("SAPI.SpVoice")
Voices := SpVoice.GetVoices()
outputFile := "VoiceList.txt"
; Очищаем файл перед записью
if FileExist(outputFile)
FileDelete, %outputFile%
Loop, % Voices.Count() {
index := A_Index - 1 ; Индексы начинаются с 0
voiceName := Voices.Item(index).GetDescription()
FileAppend, %index%: %voiceName%`n, %outputFile%
}
MsgBox, Список голосов сохранен в файл "%outputFile%"!
В папке со скриптом появится текстовый файл вида:
Код: Выделить всё
0: Microsoft Irina Desktop - Russian
1: Microsoft Zira Desktop - English (United States)
2: Microsoft David Desktop - English (United States)
3: Microsoft Adri Online (Natural) - Afrikaans (South Africa)
4: Microsoft Willem Online (Natural) - Afrikaans (South Africa)
5: Microsoft Ameha Online (Natural) - Amharic (Ethiopia)
6: Microsoft Mekdes Online (Natural) - Amharic (Ethiopia)
7: Microsoft Fatima Online (Natural) - Arabic (United Arab Emirates)
8: Microsoft Hamdan Online (Natural) - Arabic (United Arab Emirates)
9: Microsoft Ali Online (Natural) - Arabic (Bahrain)
10: Microsoft Laila Online (Natural) - Arabic (Bahrain)
...
В текст можно еще добавить параметры типа sv.Volume и sv.Rate.
По моем лучший способ получить пригодную озвучку без без api и танцев с бубнами. Кстати устанавливать голоса от того же Rhvoice тоже можно, только обновите список индексов.
Из замеченных приколов: если фраза была произнесена одним голосом, то при смене индекса он будет из кэша тянуть старю запись, старым голосом.