DetNlUtil.cs 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. using CliWrap.Buffered;
  2. using Ips.Library.Basic;
  3. using Ips.Library.Entity;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace Ips.DetAlgorithm
  10. {
  11. public static class DetNlUtil
  12. {
  13. static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detnl", "detnl.exe");
  14. public static async Task<ExeResult<Timeslot[]>> Det(string filename, int fs = 96000, int averagecnt = 5, int timeout = 120, CancellationToken token = default)
  15. {
  16. var cli = CliWrap.Cli.Wrap(CliFile)
  17. .WithArguments(args =>
  18. {
  19. args.Add(filename);
  20. args.Add(fs, false);
  21. args.Add(averagecnt, false);
  22. args.Add("-t").Add(timeout.ToString());
  23. });
  24. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  25. var result = Timeslot.FromListString(res.StandardOutput);
  26. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  27. }
  28. }
  29. }