После некоторого копания я сузил проблему до того, что ActivateAudioInterfaceAsync не может получить вывод из класса MediaPlayer. У меня есть следующий фрагмент кода, который, по моему мнению, имеет решающее значение для ответа на этот вопрос: полный код на github
Код: Выделить всё
class PlayerWrapper final
{
private:
Windows::Media::Playback::MediaPlayer m_player{};
Windows::Media::SpeechSynthesis::SpeechSynthesizer m_synth{};
public:
PlayerWrapper(concurrent_queue& q)
{
m_player.AutoPlay(true);
m_player.MediaEnded(
[&](auto...)
{
std::string msg{q.wait_and_pop()};
this->speak(msg);
});
this->speak("");
}
~PlayerWrapper()
{
spdlog::info("PlayerWrapper dropped");
m_player.Close();
}
void speak(auto message)
{
m_player.SetStreamSource(
m_synth.SynthesizeTextToStreamAsync(to_hstring(message)).get());
}
};
Подробнее здесь: https://stackoverflow.com/questions/798 ... hrough-act
Мобильная версия