我创建了一个简单的命令行程序来将文本转换为.WAV
文件。
该程序有 2 个参数
- 创建
.WAV
文件的路径 - 文本变成一个
.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);
}
}
}
}
}