首先获取百度AI的API Key和Secret Key,调用OAuth接口获取access_token,再通过text2audio接口传入文本、token等参数合成语音,使用curl发送请求并处理返回的音频流,成功则保存为MP3文件,否则返回错误信息。

在PHP项目中实现语音合成(TTS,Text to Speech),通常通过调用第三方API完成。常见的服务商包括阿里云、百度AI、腾讯云、讯飞等,它们都提供了HTTP接口用于将文本转换为语音文件。下面以调用百度AI的语音合成接口为例,介绍如何使用PHP实现TTS功能。
使用百度AI的TTS服务前,需要在百度AI开放平台注册账号并创建应用,获取以下信息:
通过API Key和Secret Key获取access_token,这是调用接口的必要参数。
获取access_token示例代码:
function getBaiduAccessToken($apiKey, $secretKey) {
$url = "https://aip.baidubce.com/oauth/2.0/token";
$post_data = [
'grant_type' => 'client_credentials',
'client_id' => $apiKey,
'client_secret' => $secretKey
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
return $result['access_token'] ?? '';
}
获取access_token后,即可调用语音合成接口。百度TTS支持多种音色、语速、音调等参数设置。
立即学习“PHP免费学习笔记(深入)”;
调用TTS接口示例:
function textToSpeech($text, $accessToken) {
$url = "https://tsn.baidu.com/text2audio";
$data = [
'tex' => urlencode($text),
'tok' => $accessToken,
'cuid' => 'your_unique_id', // 可为设备ID或随机字符串
'ctp' => 1,
'lan' => 'zh', // 中文
'aue' => 3, // 音频格式:3表示MP3
];
$query_string = http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . '?' . $query_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);
$result = curl_exec($ch);
curl_close($ch);
// 判断返回是否为音频数据(二进制流)
if (substr($result, 0, 2) === 'ID' || substr($result, 0, 4) === 'RIFF') {
$filename = 'audio_' . time() . '.mp3';
file_put_contents($filename, $result);
return $filename; // 返回保存的音频文件名
} else {
// 可能是错误信息
$error = json_decode($result, true);
return 'Error: ' . ($error['err_msg'] ?? 'Unknown error');
}
}
将上述函数组合使用:
$apiKey = 'your_api_key';
$secretKey = 'your_secret_key';
$token = getBaiduAccessToken($apiKey, $secretKey);
$text = '欢迎使用百度语音合成服务';
$audioFile = textToSpeech($text, $token);
if (strpos($audioFile, 'Error') === false) {
echo "语音已生成:<a href='$audioFile' target='_blank'>下载音频</a>";
} else {
echo $audioFile;
}
以上就是php调用语音合成服务_php调用TTS接口实现语音合成的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号