【问题标题】:Getting values from praat with a C# program使用 C# 程序从 praat 获取值
【发布时间】:2010-11-22 15:59:18
【问题描述】:

我有一个用 C# 编写的程序和由 praat(语音软件)计算的值。我已经有一个使用 praatcon.exe 运行的 praat 脚本,它在 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”参数非常重要。见解释here

【问题讨论】:

    标签: c# .net phonetics


    【解决方案1】:

    这里是如何捕获另一个 exe 的控制台输出。

    这一切都在System.Diagnostics 命名空间中。

    ProcessStartInfo si = new ProcessStartInfo();
    si.FileName = "praat.exe";     //name of the program
                                    //assumes that its 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 = "InputArgsHere";     //You can specify whatever parameters praat.exe needs here
    
    //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();
    

    【讨论】:

    • 我在 Windows 窗体应用程序中尝试了此代码,我可以看到控制台打开并在短时间内显示正确的解决方案。但是我的字符串 s 是空的。似乎 p.StandardOutput.ReadToEnd() 工作不正常。也许它会读出另一个线程的标准输出?我做错了什么?
    • 好的,您的代码运行良好! “我的”错误是我没有使用“-a”参数调用 praatcon.exe!
    【解决方案2】:

    我认为应该有一项服务可以将您连接到 praat 以获取所需的数据。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多