我正在制作一个音频过滤应用程序,它可以读取数百个音频文件并对其进行过滤。因此,如果音频中有人声,它将接受它,如果没有,它将删除音频文件。
我正在使用 ffmpeg 来获取音频的详细信息并添加其他过滤器,例如大小和持续时间以及静音(尽管它在检测所有音频文件的静音方面不是很准确。)
我的公司要求我尝试使用 Google Cloud Speech API 来检测音频中是否有任何人声。
因此,使用此代码,一些音频文件会在音频文件中返回口语单词的转录,但我需要确定是否有人在说话。
我考虑过使用hark.js,但似乎没有足够的文档,而且我的时间很短!
附言。我是一名实习生,我刚开始编程。如果我的问题没有意义或听起来很愚蠢,我深表歉意。
# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';
# Imports the Google Cloud client library
use Google\Cloud\Speech\V1\SpeechClient;
use Google\Cloud\Speech\V1\RecognitionAudio;
use Google\Cloud\Speech\V1\RecognitionConfig;
use Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding;
putenv('GOOGLE_APPLICATION_CREDENTIALS=../../credentials.json');
echo getcwd() . "<br>";
chdir('test-sounds');
echo getcwd() . "<br>";
echo shell_exec('ls -lr');
$fileList = glob('*');
foreach($fileList as $filename){
//echo $filename, '<br>';
# The name of the audio file to transcribe
$audioFile = __DIR__ . '/' . $filename;
# get contents of a file into a string
$content = file_get_contents($audioFile);
# set string as audio content
$audio = (new RecognitionAudio())
->setContent($content);
# The audio file's encoding, sample rate and language
$config = new RecognitionConfig([
'encoding' => AudioEncoding::LINEAR16,
'language_code' => 'ja-JP'
]);
# Instantiates a client
$client = new SpeechClient();
# Detects speech in the audio file
$response = $client->recognize($config, $audio);
# Print most likely transcription
foreach ($response->getResults() as $result) {
$alternatives = $result->getAlternatives();
$mostLikely = $alternatives[0];
$transcript = $mostLikely->getTranscript();
printf('<br>Transcript: %s' . PHP_EOL, $transcript . '<br>');
}
$client->close();
}
?> ```