0

我创建了一个简单的命令行程序来将文本转换为.WAV文件。

该程序有 2 个参数

  1. 创建.WAV文件的路径
  2. 文本变成一个.WAV

这是我在尝试将输出设置为默认音频设备时遇到的错误:

你调用的对象是空的。在 System.Speech.Internal.ObjectTokens.SAPICategories.DefaultDeviceOut() 在 System.Speech.Internal.Synthesis.VoiceSynthesis..ctor(WeakReference speechSynthesizer) 在 System.Speech.Synthesis.SpeechSynthesizer.get_VoiceSynthesizer() 在 System.Speech.Synthesis。 SpeechSynthesizer.SetOutputToNull() at System.Speech.Synthesis.SpeechSynthesizer.SetOutputStream(Stream stream, SpeechAudioFormatInfo formatInfo, Boolean headerInfo, Boolean closeStreamOnExit) at System.Speech.Synthesis.SpeechSynthesizer.SetOutputToDefaultAudioDevice() at TTS.Program.Main(String[]参数)“

对此的任何帮助将不胜感激。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Speech.Synthesis;
using System.Text;
using System.Threading.Tasks;

namespace TTS 
{
    class Program 
    {
        static SpeechSynthesizer synthesizer;

        static void Main(string[] args) 
        {
            //"..\\audio\\message.wav"

            using(System.IO.FileStream stream = System.IO.File.Create(args[0])) 
            {
                try 
                {
                    synthesizer = new SpeechSynthesizer();
                    Console.WriteLine("Creating WAV");
                    synthesizer.SetOutputToWaveStream(stream);
                    Console.WriteLine("Speaking Words");
                    synthesizer.Speak(args[1]);
                    Console.WriteLine("Disposing");
                    synthesizer.Dispose();
                    Console.WriteLine("Finished");
                } catch (Exception ex) 
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
            }
        }
    }
}
4

0 回答 0