использование System.Speech.Synthesis с универсальным приложением Windows10 (XAML-C#)

Я попытался использовать SpeechSynthesizer из System.Speech.Synthesis, потому что он кажется более полным, чем тот, который я использовал раньше (Windows.Media.SpeechSynthesis): я хочу иметь возможность устанавливать громкость, пол голоса, ... Кроме того, во французском произношении есть некоторые ошибки, поэтому я хотел проверить, лучше ли System.Speech.

Я добавил ссылку, но сборка выдает эту ошибку, и я не могу ее исправить:

Cannot find type System.MarshalByRefObject in module CommonLanguageRuntimeLibrary.

person Myosotis    schedule 03.09.2015    source источник
comment
Привет, я работаю в команде, которая создала SpeechSynthesis API. Вы должны быть в состоянии найти голос, доступный как для мужчин, так и для женщин (см. SpeechSynthesis.AllVoices для их перечисления, должно быть по одному для каждого из поддерживаемых установленных языков речи) . И если вы используете MediaElement для его воспроизведения, есть свойство Volume, которое вы можете изменить, чтобы управлять им. Разве они не делают то, что вам нужно?   -  person Andrew Pilley    schedule 04.09.2015
comment
Я просмотрел доступные голоса. Во французском только один голос. Я искал детский голос, так как это приложение для очень маленьких детей. По объему посмотрю на MediaElement, спасибо.   -  person Myosotis    schedule 04.09.2015
comment
Но гораздо важнее: я обнаружил много ошибок произношения с французским голосом (например, при произнесении 70). Более того, мне нужно использовать фонетический алфавит, чтобы произносить звуки, которых нет во французском языке. Например, когда мне нужно сказать BA, я должен написать bas, потому что это слово существует во французском языке. Но я не могу сказать Б.И.: он скажет Б.И.. Хуже того: когда вы говорите что-то, что соответствует аббревиатуре, это произносит целое выражение: АА произносится не как А, а как анонимные алкоголики.   -  person Myosotis    schedule 04.09.2015
comment
хм, определенно должно быть два голоса для каждого языка, я проверю, когда приступлю к работе. Но детского, к сожалению, нет. Что касается произношения, вы, вероятно, захотите изучить использование SSML, потому что там вы можете предоставить руководства по произношению и сможете точно сказать, что вы хотите, используя элемент фонемы.   -  person Andrew Pilley    schedule 04.09.2015
comment
Элемент фонемы выглядит действительно очень интересно. Что ж, попробую понять, как это работает. Спасибо !   -  person Myosotis    schedule 04.09.2015
comment
У нас есть краткий пример его использования, если вы откроете Speech Reco and Synthesis с GitHub. Сценарий 2 использует SSML и использует элемент фонемы для создания слова, которое может произноситься определенным образом на любом языке (и в раскрывающемся списке также должны отображаться как мужской, так и женский голос, я подробнее остановлюсь на этом, странно, что ты видишь только одного)   -  person Andrew Pilley    schedule 04.09.2015
comment
Выглядит мощно!!! Мои первые тесты обнадеживают. Я ныряю в него без дальнейших проволочек. Благодарю вас !   -  person Myosotis    schedule 05.09.2015
comment
Должно быть, я сделал ошибку в предложении со ссылкой, когда искал французские языки, потому что с SSML я могу иметь два голоса.   -  person Myosotis    schedule 07.09.2015
comment
Но я обнаружил, что что-то не так: когда я добавляю za ze zi zo zy в элемент фонемы, z произносится [z]. Но если я поставлю za (или другое) отдельно, то будет [r] или [ch] или [w] (в зависимости от voyel), но никогда [z]. Я также пробовал z , ʐ , ʑ и ʒ, которые не лучше. Как вы можете играть только звук [z]? И у меня такая же проблема с ha (h aspiré).   -  person Myosotis    schedule 07.09.2015


Ответы (1)


На самом деле нет способа использовать .NET API System.Speech.Synthesis в приложении WinRT без создания приложения, которое в конечном итоге не пройдет тесты WACK для отправки.

Многие пространства имен .NET не были спроецированы в WinRT. В частности, System.Speech.*, поскольку уже существуют Windows.Media.SpeechSynthesis и Windows.Media.SpeechRecognition, которые были перенесены из пространств имен API Windows Phone и должны быть функционально завершены для большинства целей.

Только старые API .NET, которые являются частью профиля .NETCore были спроецированы на WinRT.

person Andrew Pilley    schedule 04.09.2015
comment
Жаль, потому что образцы, которые вы можете найти на форумах и в учебниках, почти всегда говорят о System.Speech, что демонстрирует, что это любимая библиотека для большинства разработчиков. - person Myosotis; 04.09.2015
comment
System.speech существует дольше, но он основан на более старых версиях технологии. Windows.Media в основном представляет собой ту же кодовую базу, но с множеством улучшений и поддержки, она только началась с версии API для телефонов. Но если вы хотите, чтобы какая-то функция была упущена, дайте мне знать, и я позабочусь о том, чтобы у команды был рабочий элемент для ее отслеживания. - person Andrew Pilley; 04.09.2015