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);
}