首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Speech.Synthesizer发送到特定设备

将Speech.Synthesizer发送到特定设备
EN

Stack Overflow用户
提问于 2017-05-04 19:36:02
回答 1查看 1.5K关注 0票数 4

我正在使用Microsoft语音合成,并希望将输出重定向到我选择的输出音频设备。

到目前为止,我有以下代码:

代码语言:javascript
复制
SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
speechSynthesizer.SpeakAsync("Yea it works!");

目前我正在使用:

代码语言:javascript
复制
speechSynthesizer.SetOutputToDefaultAudioDevice();

但我真的想把它寄到我选择的设备上。我正在寻找一个如何指导我所选择的输出设备的切分例子。我看到我可以用:

代码语言:javascript
复制
speechSynthesizer.SetOutputToWaveStream();

这需要一个“流”,但我不知道如何喂养它。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-08 06:25:34

您可以创建一个MemoryStream并将其附加到CSCore的WaveOut类。WaveOut需要一个IWaveSource参数,因此您可以使用CSCore的MediaFoundationDecoderSpeechSynthesizer转换波形流。我制作了一个小型控制台应用程序来说明:

代码语言:javascript
复制
using System;
using System.IO;
using System.Speech.Synthesis;
using CSCore;
using CSCore.MediaFoundation;
using CSCore.SoundOut;

namespace WaveOutTest
{
    class Program
    {
        static void Main()
        {
            using (var stream = new MemoryStream())
            using (var speechEngine = new SpeechSynthesizer())
            {
                Console.WriteLine("Available devices:");
                foreach (var device in WaveOutDevice.EnumerateDevices())
                {
                    Console.WriteLine("{0}: {1}", device.DeviceId, device.Name);
                }
                Console.WriteLine("\nEnter device for speech output:");
                var deviceId = (int)char.GetNumericValue(Console.ReadKey().KeyChar);

                speechEngine.SetOutputToWaveStream(stream);
                speechEngine.Speak("Testing 1 2 3");

                using (var waveOut = new WaveOut { Device = new WaveOutDevice(deviceId) })
                using (var waveSource = new MediaFoundationDecoder(stream))
                {
                    waveOut.Initialize(waveSource);
                    waveOut.Play();
                    waveOut.WaitForStopped();
                }
            }
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43791428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档