Как перевести синтаксис C # в Matlab? - PullRequest
0 голосов
/ 28 марта 2019

Я делаю преобразование текста в речь для части проекта, и у Matlab есть некоторые функции для извлечения сборок .NET, , но с очень ограниченной документацией .У меня проблемы с вызовом некоторых методов, чтобы изменить голос. Документация Microsoft SystemSpeech подразумевает, что это должно работать , но я получаю эту ошибку при попытке:

objspeech.SelectVoice('Anna')
Message: Cannot set voice. No matching voice is installed or the voice was
disabled.
Source: System.Speech
HelpLink:

Вот минимальная рабочая версия моего кода:

NET.addAssembly('System.Speech');
objspeech = System.Speech.Synthesis.SpeechSynthesizer;
% objspeech.SelectVoice('Anna');
objspeech.Volume = 100;
SpeakAsync(objspeech, 'Hello World');

Единственный сбой с SelectVoice.Я не могу понять, как это изменить.Запуск objspeech.GetInstalledVoices возвращает:

ReadOnlyCollection<System*Speech*Synthesis*InstalledVoice> with properties:

    Count: 2

Кто-нибудь знает, почему SelectVoice не будет работать?

1 Ответ

0 голосов
/ 28 марта 2019

Вот что я сделал, чтобы наконец получить все доступные голоса и выбрать другой:

resultEnumerable = NET.explicitCast(result,'System.Collections.IEnumerable');
resultEnumerator = resultEnumerable.GetEnumerator();
resultEnumerator = NET.explicitCast(resultEnumerator, 'System.Collections.IEnumerator');
while (resultEnumerator.MoveNext)
    v1=resultEnumerator.Current;
    v1.VoiceInfo.Name
end

objspeech.SelectVoice(v1)

Здесь для моего v1 был «Microsoft Zira Desktop», поэтому objspeech.SelectVoice('Microsoft Zira Desktop') работал.Странно, что в настройках Windows у меня установлены и работают Microsoft David, Mark и Zira, но через .NET доступны только David и Zira.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...