如何使我的脚本更快.其中一部分仅需3秒



在检查了我的代码后,我发现为什么加载愿望需要7秒。。

$target_path = "uploads/";
exec("./speechdetect.sh uploads/voice.3gp > speech.results");
$myFile = "uploads/voice.3gp";
unlink($myFile);
$myFile = "voice.flac";
unlink($myFile);
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

我的脚本录制了一段语音,然后通过speechdetect.sh将其发送到谷歌。然后将谷歌翻译的文本发送到speak,然后我的程序匹配它并相应地执行命令,例如打开收音机。

我如何才能让它更快、更好或更高效我真的想要一个快速的页面加载时间我也在使用lighttpd。

p.S如果没有这部分代码,我的页面将在352ms内加载。

外壳代码也是

#!/bin/bash
sudo rm voice.flac 
# FLAC encoded example
ffmpeg -i $1 voice.flac
curl 
  --data-binary @voice.flac 
  --header 'Content-type: audio/x-flac; rate=8000' 
  'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&pfilter=0&lang=en-GB&maxresults=1'

我想是"speechdetect.sh"脚本花了很多时间。因此,如果可能的话,您应该尝试优化shell脚本。无论如何,它都会很慢,因为你必须远程连接到谷歌,上传数据,谷歌需要一些时间来处理数据,然后需要一些时间才能将其发送回你。

这些因素包括:带宽、延迟、谷歌处理数据的性能。

你能做的最好的事情就是让等待变得更愉快。在iframe中执行脚本,或者在可能的情况下通过AJAX加载脚本,并显示某种加载指示器,以便用户知道发生了什么

编辑:

好吧,也许ffmpeg是罪魁祸首,因为ffmpeg可能非常慢——它在启动时加载了很多代码。

试试这个测试你的脚本:

测量脚本实际消耗的时间

从外壳开始,如下所示:

time ./speechdetect.sh uploads/voice.3gp > speech.results

这应该输出类似于:

real    0m1.005s
user    0m0.000s
sys     0m0.008s

实际部分是实际执行时间(在本例中为1.005秒)。欲了解更多信息,请查看手册页

在php脚本中创建一个简单的基准

$target_path = "uploads/";
$time_start = microtime(true);
exec("./speechdetect.sh uploads/voice.3gp > speech.results");
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Time elapsed: " . $time . " seconds";
// ....

获取更多详细信息,无论上传到谷歌还是ffmpeg都会消耗时间:

修改你的shell脚本(增加时间):

#!/bin/bash
sudo rm voice.flac 
# FLAC encoded example
time ffmpeg -i $1 voice.flac
time curl 
  --data-binary @voice.flac 
  --header 'Content-type: audio/x-flac; rate=8000' 
  'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&pfilter=0&lang=en-GB&maxresults=1'

运行它:./speechdetect.sh uploads/voice.3gp(不重定向输出)

显示的第一个时间基准是ffmpeg,第二个时间基准来自对curl 的调用

最好的办法是找到一些工具在本地进行语音检测。你可能无法加快与谷歌的连接速度,也无法改变谷歌引擎的工作速度。

这取决于文件的大小和上传连接的速度。它可能不会再快了。

相关内容

  • 没有找到相关文章

最新更新