首頁 >後端開發 >php教程 >PHP中如何進行語音合成與語音辨識?

PHP中如何進行語音合成與語音辨識?

王林
王林原創
2023-05-27 17:51:061630瀏覽

PHP(Hypertext Preprocessor)是一種廣泛應用的伺服器端腳本語言,通常用於開發 Web 應用程式。在許多 Web 應用程式中,語音合成和語音辨識是一個非常重要的功能,PHP 也提供了相應的工具和函式庫來實現這些功能。

一、語音合成

語音合成(Text-To-Speech,TTS)是將文字轉換為語音的過程。 PHP 中有許多函式庫和工具可以實現語音合成,以下介紹一些較常用的函式庫和工具。

  1. Google Text-to-Speech API

Google Text-to-Speech API 是一種線上 API,可以將文字轉換為各種語音類型。使用此 API,需要先去 Google Cloud 上註冊帳號,並建立一個新的專案。在專案中啟用“Google Text-to-Speech API”,並下載“API 金鑰”,用於呼叫 API。

使用PHP 呼叫Google Text-to-Speech API 的程式碼範例如下:

$text = "Hello, world.";
$url = "https://texttospeech.googleapis.com/v1/text:synthesize?key=[API_KEY]";
$data = array(
    "input" => array(
        "text" => $text
    ),
    "voice" => array(
        "languageCode" => "en-US",
        "name" => "en-US-Wavenet-D"
    ),
    "audioConfig" => array(
        "audioEncoding" => "MP3"
    )
);
$json = json_encode($data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/json"
));
$result = curl_exec($curl);
curl_close($curl);

file_put_contents("output.mp3", $result);
  1. Microsoft Speech SDK

Microsoft Speech SDK 是由微軟提供的一套用於語音辨識和語音合成的工具和函式庫。它支援多種語音合成引擎,包括微軟自家的引擎(Microsoft Speech Platform)和其他一些第三方引擎。

使用Microsoft Speech SDK 將文字轉換為語音的程式碼範例如下:

require 'vendor/autoload.php';

use MicrosoftCognitiveServicesSpeechSpeechConfig;
use MicrosoftCognitiveServicesSpeechSpeechSynthesizer;

// Replace with your own subscription key and region identifier
$key = "YourSubscriptionKey";
$region = "YourServiceRegion";

// Configure the synthesizer object
$speech_config = SpeechConfig::fromSubscription($key, $region);
$synthesizer = new SpeechSynthesizer($speech_config);

// Synthesize speech from text
$text = "Hello, world.";
$file_name = "output.wav";
$results = $synthesizer->speakText($text, $file_name);

// Output the speech file
header('Content-type: audio/wav');
echo file_get_contents($file_name);

二、語音辨識

語音辨識(Speech Recognition,SR)是將語音轉換為文本的過程。 PHP 中同樣有許多函式庫和工具可以實現語音識別,以下介紹一些比較常用的函式庫和工具。

  1. Google Cloud Speech-to-Text API

Google Cloud Speech-to-Text API 是一種線上 API,可以將語音轉換為文字。使用此 API,需要先去 Google Cloud 上註冊帳號,並建立一個新的專案。在專案中啟用“Google Cloud Speech-to-Text API”,並下載“API 金鑰”,用於呼叫 API。

使用PHP 呼叫Google Cloud Speech-to-Text API 的程式碼範例如下:

$file_name = "audio.wav";
$file_content = file_get_contents($file_name);

$url = "https://speech.googleapis.com/v1/speech:recognize?key=[API_KEY]";
$data = array(
    "config" => array(
        "encoding" => "LINEAR16",
        "sampleRateHertz" => 16000,
        "languageCode" => "en-US"
    ),
    "audio" => array(
        "content" => base64_encode($file_content)
    )
);
$json = json_encode($data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/json"
));
$result = curl_exec($curl);
curl_close($curl);

$obj = json_decode($result);
if (isset($obj->results)) {
    $text = $obj->results[0]->alternatives[0]->transcript;
    echo $text;
}
  1. Wit.ai

Wit.ai 是一個在線語音辨識平台,可以將語音轉換為文字和其他資料。它的 API 相對於其他語音辨識 API 更加智能,可以識別意圖和實體。使用此 API,需要先去 Wit.ai 上註冊一個帳號,並建立一個新的應用程式。在應用程式中啟用“Speech API”,並獲得 API 金鑰和應用程式 ID。

使用PHP 呼叫Wit.ai Speech API 的程式碼範例如下:

$file_name = "audio.wav";
$file_content = file_get_contents($file_name);

$url = "https://api.wit.ai/speech?v=20211006";
$data = $file_content;

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    "Authorization: Bearer [API_KEY]",
    "Content-Type: audio/wav"
));
$result = curl_exec($curl);
curl_close($curl);

$obj = json_decode($result);
if (isset($obj->_text)) {
    $text = $obj->_text;
    echo $text;
}

總結

透過使用上述工具和函式庫,可以輕鬆地在PHP 中實現語音合成和語音辨識的功能。它們可以幫助我們快速建立出更聰明而富有互動性的 Web 應用程序,是 Web 開發的重要工具之一。

以上是PHP中如何進行語音合成與語音辨識?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn