first commit
This commit is contained in:
88
digital_doctor/application/api/controller/Service.php
Normal file
88
digital_doctor/application/api/controller/Service.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/10/21} {14:52}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Service extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:文本转语音
|
||||
*
|
||||
* 语音转换服务
|
||||
*
|
||||
* api/Service/azurettsAudio
|
||||
*
|
||||
* 参数:
|
||||
* text: 文本内容
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
public function azurettsAudio()
|
||||
{
|
||||
$text = input('text','Bagaimana keadaan pernafasan anda?');
|
||||
$data_raw = input('data_raw','ms-MY');
|
||||
$data_neural = input('data_neural','YasminNeural');
|
||||
$service_config = config('voice_to_text_service');
|
||||
//回答
|
||||
$url = $service_config['base_url'];//"https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1";
|
||||
$subscriptionKey = $service_config['APIKey'];//"090287baa7b14fcfb060a70bd1863f2f";
|
||||
$outputFormat = "audio-48khz-192kbitrate-mono-mp3";
|
||||
$xmlContent = <<<XML
|
||||
<?xml version='1.0'?>
|
||||
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='{$data_raw}'>
|
||||
<voice name='{$data_raw}-{$data_neural}'>
|
||||
{$text}
|
||||
</voice>
|
||||
</speak>
|
||||
XML;
|
||||
|
||||
$options = array(
|
||||
'http' => array(
|
||||
'header' => "Ocp-Apim-Subscription-Key: $subscriptionKey\r\n" .
|
||||
"Content-Type: application/ssml+xml\r\n" .
|
||||
"X-Microsoft-OutputFormat: $outputFormat\r\n" .
|
||||
"User-Agent: MyTTSApp\r\n", // 添加 User-Agent 头
|
||||
'method' => 'POST',
|
||||
'content' => $xmlContent,
|
||||
),
|
||||
);
|
||||
|
||||
$context = stream_context_create($options);
|
||||
$result = file_get_contents($url, false, $context);
|
||||
|
||||
if ($result === FALSE) {
|
||||
// 处理错误
|
||||
//echo "请求失败";
|
||||
return json(Tools::set_fail('请求失败'));
|
||||
} else {
|
||||
$date = date("YmdHis");
|
||||
$root_path = Tools::get_root_path();
|
||||
$request_path = '/audio/azure_tts';
|
||||
$save_path = 'public'.$request_path;
|
||||
$filepath = $root_path . $save_path;
|
||||
if (!file_exists($filepath)) {
|
||||
mkdir($filepath, 0777, true); // 确保目录存在
|
||||
}
|
||||
$filename = "/output_$date.mp3";
|
||||
file_put_contents($filepath . $filename, $result);
|
||||
//echo "音频文件已生成: $filename";
|
||||
$domain = request()->domain();
|
||||
return json(Tools::set_ok('请求成功',$domain.$request_path.$filename));
|
||||
}
|
||||
}
|
||||
|
||||
function test(){
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user