2017-01-05 3 views
2

Мне нужно сказать предложение с немецким именем в предложении. Для этого я использовал речь Microsoft с английским языком, назвал функцию talkasync, чтобы сказать первую часть предложения, затем изменил язык на немецкий язык, сказал имя, затем вернулся на английский язык и закончил предложение. это все работает хорошо, за исключением того, что каждый раз, когда я вызываю функцию talkasync, это пауза в 1 секунду. поэтому у меня есть секундная пауза до и после имени. это можно как-то удалить? Я бы хотел, чтобы между ними не было паузы.TTS microsoft.speech, лучший способ сказать предложение свободно с изменением языка

s.SetOutputToDefaultAudioDevice() 
    s.SelectVoice(myENGLISHvoice) 
    s.SpeakAsync("Next on the line is mr. ") 
    s.SelectVoice(myGERMANvoice) 
    s.SpeakAsync("Stefan Hanswurst") 
    s.SelectVoice(myENGLISHvoice) 
    s.SpeakAsync("Please stand up.") 

Update, я также попытался это, без успеха .. та же проблема:

pb.AppendSsmlMarkup("<voice xml:lang=""en-EN"">") 
    pb.AppendText("Next on the line is mr.") 
    pb.AppendSsmlMarkup("</voice>") 

    pb.AppendSsmlMarkup("<voice xml:lang=""de-DE"">") 
    pb.AppendText("Hansjörg Bratwurst ") 
    pb.AppendSsmlMarkup("</voice>") 

    pb.AppendSsmlMarkup("<voice xml:lang=""en-EN"">") 
    pb.AppendText("Please stand up.") 
    pb.AppendSsmlMarkup("</voice>") 

ответ

1

В контексте речи двигателей вы обычно избегают переключения языка во время речевого вывода, это необычно, так как люди также просто придерживайтесь одного произношения (см., например, как американцы и итальянцы произносят кофе или Капучино).

Обычно это делается путем вставки подсказок для «иностранных» слов в язык, на котором вы в настоящее время генерируете вывод. Подобно тому, как немцы должны научиться произносить «Капучино», и у него все еще будет немецкий акцент/специфический для него.

Посмотреть данные Microsofts Speech API здесь (поиск "произношением" -> они имеют орфографическую ошибку на странице): https://msdn.microsoft.com/en-us/library/hh378454(v=office.14).aspx

+0

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

+0

, например, не меняющийся язык с задержкой. его самой говорящей функцией. – sharkyenergy

+0

Хорошо, посмотрите на эту ссылку здесь: https://msdn.microsoft.com/en-us/library/hh378516(v=office.14).aspx. Вы даете движку точное произнесение имени, поэтому имя, которое вы дадите, будет звучать «оригинально». Проблема в том, что вам нужно сделать это для каждого конкретного слова. –

Смежные вопросы