0

After checking my code I found why it is taking 7 seconds to load wish is a pain..

$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']); 

My script takes a voice recording and then sends it to google via speechdetect.sh. then takes the text which googled translated say to speak and then my program matches it and executes the command accordingly such as radio on.

How can I make this faster better or more efficient I really want a fast page loading time Im also using lighttpd.

P.S without this section of code my page loads in 352ms.

Also the shell code is

#!/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'
4

3 回答 3

2

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

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

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

编辑:

好吧,也许 ffmpeg 是罪魁祸首,因为 ffmpeg 可能非常慢 - 它在启动时会加载大量代码。

试试这个对你的脚本进行基准测试:

测量脚本实际消耗的时间。

像这样从 shell 启动它:

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";
// ....

获取更详细的信息上传到google还是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 的调用

于 2013-02-09T12:16:38.903 回答
1

您最好的选择是找到一些工具在本地进行语音检测。您可能无法加快与 google 的连接或更改 google 引擎的运行速度。

于 2013-02-09T12:15:18.030 回答
0

这取决于文件的大小以及上传连接的速度。恐怕不会再快了。

于 2013-02-09T12:14:05.477 回答