使用 C# 程序从 praat 获取值
我有一个用 C# 编写的程序和由 praat(语音软件)计算的值。我已经有一个 praat 脚本与 praatcon.exe 一起运行,它在 Windows 控制台 (cmd.exe) 上打印结果。 我可以在我的 C# 应用程序中使用这个结果吗?如何?
或者是否有更好的方法来获取结果,例如使用命令“sendsocket”?这个要怎么用呢?
编辑:它与此代码配合得很好:
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = "praatcon.exe"; //name of the handle program from sysinternals
//assumes that it is in the exe directory or in your path
//environment variable
//the following three lines are required to be able to read the output (StandardOutput)
//and hide the exe window.
si.RedirectStandardOutput = true;
si.WindowStyle = ProcessWindowStyle.Hidden;
si.UseShellExecute = false;
si.Arguments = "-a example.praat filename.wav"; //you can specify whatever parameters praatcon.exe needs here; -a is mandatory!
//these 4 lines create a process object, start it, then read the output to
//a new string variable "s"
Process p = new Process();
p.StartInfo = si;
p.Start();
string s = p.StandardOutput.ReadToEnd();
在 praatcon.exe 中使用“-a”参数非常重要。请参阅此处的说明。
I have a program written in C# and values calculated by praat (phonetics software). I already have a praat script running with praatcon.exe which prints the results on a Windows console (cmd.exe).
Can I use this result in my C# application? How?
Or is there a better way to get the results, e.g. with the command "sendsocket"? How to use this one?
Edit: It works great with this code:
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = "praatcon.exe"; //name of the handle program from sysinternals
//assumes that it is in the exe directory or in your path
//environment variable
//the following three lines are required to be able to read the output (StandardOutput)
//and hide the exe window.
si.RedirectStandardOutput = true;
si.WindowStyle = ProcessWindowStyle.Hidden;
si.UseShellExecute = false;
si.Arguments = "-a example.praat filename.wav"; //you can specify whatever parameters praatcon.exe needs here; -a is mandatory!
//these 4 lines create a process object, start it, then read the output to
//a new string variable "s"
Process p = new Process();
p.StartInfo = si;
p.Start();
string s = p.StandardOutput.ReadToEnd();
It is VERY important to use the "-a" parameter with praatcon.exe. See explanation here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下是如何捕获另一个 exe 的控制台输出。
这些都位于 System.Diagnostics 命名空间中。
Here's how to capture the console output of another exe.
This is all in the
System.Diagnostics
namespace.我认为应该有一个服务可以将您连接到 praat 以获取所需的数据。
I think there should be a service which connects you to praat to get required data.