C# 如何在BBBackground中播放多个语音合成器流?

C# 如何在BBBackground中播放多个语音合成器流?,c#,uwp,media-player,text-to-speech,C#,Uwp,Media Player,Text To Speech,我试着用了一些大致如下的方法: public async Task ReadParagraph(int id) { var mp = (App.Current as App).mediaPlayer; var ns = (App.Current as App).nextStream; readerPosition = id; var tb = Items.OfType<TextBlock>(); if (readerPosition <

我试着用了一些大致如下的方法:

public async Task ReadParagraph(int id)
{
    var mp = (App.Current as App).mediaPlayer;
    var ns = (App.Current as App).nextStream;
    readerPosition = id;
    var tb = Items.OfType<TextBlock>();
    if (readerPosition < tb.Count())
    {
        if (synth == null)
            synth = new SpeechSynthesizer();
        synth.Voice = SpeechSynthesizer.DefaultVoice;
        var str = await synth.SynthesizeTextToStreamAsync(tb.ElementAt(readerPosition).Text);
        var ms = MediaSource.CreateFromStream(str, str.ContentType);
        mp.Source = ms;
        mp.PlaybackSession.PlaybackRate = 1.3;
        mp.Play();
    }
}
理论上这是可行的。问题是,每个synth流之间都有3s+的暂停。在WP8.1上,使用
MediaElement
它工作得很好,但它看起来像MediaPlayer,其
背景音频播放功能在不同的条件下工作

另外,是否有其他方法可以更改MediaPlayer的默认播放速率,而不是单独更改ebvery文件的播放速率?它似乎不是100%的时间工作的方式,我有它目前的设置

我也一直在考虑将整个文本初始化为
列表
,但这似乎会占用长文本的大量内存


处理此问题的最佳选项是什么?

您是使用进程外背景音频还是新的进程内背景音频?可以分享你的演示吗?我已经使用了教程,虽然我现在没有在任何地方使用
isBackground
变量。我也遵循了,但我没有使用
MediaPlayerElement
。您使用的是进程外背景音频,还是新的进程内背景音频?可以分享你的演示吗?我已经使用了教程,虽然我现在没有在任何地方使用
isBackground
变量。我也遵循了,但我没有使用
MediaPlayerElement
private async void MediaPlayer_MediaEnded(MediaPlayer sender, object args)
{
        await currentStory.Commands.ReadParagraph(Reader.Current.readerPosition + 1);
}