c#上的Google TTS字符串问题

时间:2013-07-24 16:57:55

标签: c# .net .net-4.0 text-to-speech naudio

我正在使用谷歌文本语音(TTS)。大家都知道它一次只支持100个字符串。我已经正确实现了TTS部分,但不是超过100个字符。所以我说我会得到例外。

    public void Read(string text) // Lets say text has length 250 (>100)
    {
        DeleteFile();
        ReadText(text);
        PlaySound();
    }

我有一种处理音频的方法:

    public void DisposeWave()
    {
        if (output != null)
        {
            if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing) output.Stop();
            output.Dispose();
            output = null;
        }
        if (stream != null)
        {
            stream.Dispose();
            stream = null;
        }
    }

另外请考虑我正在使用NAudio(使用NAudio.Wave;)。 如何有效地修改此代码并毫无问题地播放整个字符串音频。

编辑问题: 当我们使用Google TTS时,您知道它一次只能支持100个字符串。我的问题是如果我的字符串大于100我不会允许谷歌做TTS。因此,我确实希望将字符串拆分为100个集合并播放音频而不会发生冲突。怎么做?

请帮忙。

1 个答案:

答案 0 :(得分:0)

更改此方法,如

  public void Read(string text) // Lets say text has length 250 (>100)
    {
        DeleteFile();

        int startIndex = 0;
        string textToPlay = text;
        string remainingText = text;
        while (remainingText.Length > 100)
        {
            textToPlay = remainingText.Substring(startIndex, 100);

            startIndex = startIndex + 100;
            remainingText = text.Substring(startIndex);
            ReadText(textToPlay);
        }
        ReadText(remainingText);
        PlaySound();
    }