1

TTSシステムがピリオド(。)またはコンマ(、)で一時停止することはわかっています。しかし、どうすればそれをより長い期間一時停止させることができますか?たとえば、質疑応答のシナリオでは、音声で質問を読み、一時停止して、聞き手が心の中で質問に答えてから、音声で答えを読み取れるようにします。

一連のピリオドをつなぎ合わせてみましたが、TTSで1つに統合されているため、1つのピリオドと同じ長さで効果的に一時停止しているようです(LinuxのFestivalではこれは行われませんでしたが、Windows SAPIではそうなっているようです)。

一時停止を長くするために使用できる文字または文字のシーケンスはありますか?あるいは、この目標を達成するための別の手段はありますか?

4

1 に答える 1

3

Characters won't do. Use XML markup to control this better, pass the SPF_IS_XML flag:

  HRESULT hr = pVoice->Speak(L"Hello <silence msec=\"1000\"/> world", 
                  SPF_IS_XML, NULL );

Or you can use an SSML document with the SPF_PARSE_SSML flag, use the <break> element:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
   Hello<break time="1000ms" />world
</speak>

If you can use C# then the PromptBuilder class is very handy to build the SSML:

    private SpeechSynthesizer synth = new SpeechSynthesizer();

    private void sayHello() {
        var builder = new PromptBuilder();
        builder.AppendText("Hello");
        builder.AppendBreak(TimeSpan.FromMilliseconds(1000));
        builder.AppendText("world");
        synth.SpeakAsync(new Prompt(builder));
   }
于 2013-02-05T02:15:49.870 に答える