生徒用の MS PowerPoint 2013 アプリケーションにテキスト読み上げ合成を追加することに成功しました。このアプリは、SSML/XML コードを使用してピッチを変更することで、大人の声と子供の声を切り替えているような印象を与えます。これは、Microsoft Anna の音声を使用して、Windows 7 でうまく機能しました。
ただし、Windows 10 がますます一般的になってきているため、PowerPoint が Windows 10 でも適切に機能する必要があります。アプリは実行され、デフォルトの Microsoft David Desktop 音声を使用しますが、David を使用して別の声が話していることを伝える場合、ピッチの変更は十分ではありません。これは、このアプリにとって大きな問題です。ユーザーは、話している声に応じて異なるアクションを実行する必要があるからです。
スピーチを機能させるために、PowerPoint VBA は Microsoft Excel 15.0 Object Library への参照を使用し、次に次のコードを使用します。SayWhat は、高いピッチまたは低いピッチの XML を組み込んだ話すテキストです。
Excel.Application.Speech.Speak Text:="<?xml version='1.0'?> <speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" & SayWhat & "</speak>", SpeakAsync:=Async, SpeakXML:=True
そして、SayWhat 変数は次で始まります
<prosody pitch = 'high'>
で終わります
</prosody>
子供の声の場合、次で始まります
<prosody rate = '-15%'><prosody pitch = 'low'>
で終わります
</prosody></prosody>
大人の声に。
Windows 10 では、Microsoft David Desktop が TTS 設定のデフォルトの音声です。
私が今やろうとしているのは、Windows 10 の David 音声を大人用に、Windows 10 Zira 音声を子供用に使用することです。ただし、次のコードを使用すると、David の声でのみ話され、Zira の声では話されません。
Excel.Application.Speech.Speak Text:="<?xml version='1.0'?> <speak version='1.1' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" & "<voice name='MicrosoftZiraDesktop-English(UnitedStates)'>I am Zira.</voice><voice name='MicrosoftDavidDesktop-English(UnitedStates)'>I am David.</voice>" & "</speak>", SpeakAsync:=Async, SpeakXML:=True
それはうまくいきません。これもありません:
Excel.Application.Speech.Speak Text:="<?xml version='1.0'?> <speak version='1.1' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" & "<voice name='Zira'>I am Zira.</voice><voice name='David'>I am David.</voice>" & "</speak>", SpeakAsync:=Async, SpeakXML:=True
また、ボイス ストリングで試したバリエーションもいくつもありません。
私が見つけた SSML/XML のオンライン ドキュメントはすべて、要素の構文が正しいことを示していますが、音声を切り替えることができません。
実際に音声を変更するために機能する正しい SSML/XML コードを特定できる人はいますか?
(注: デフォルトの声を David ではなく Zira に変更すると、上記のコードは David の代わりに Zira の声で話し、David に切り替わりません。)