diff --git a/app/api/controller/XunFeiController.php b/app/api/controller/XunFeiController.php index d5617df60..d0ecb933d 100644 --- a/app/api/controller/XunFeiController.php +++ b/app/api/controller/XunFeiController.php @@ -125,6 +125,7 @@ class XunFeiController extends BaseApiController { header('X-Accel-Buffering: no'); $file = request()->file('audio'); + /* if(empty($file)){ //return $this->fail('未上传音频文件'); } @@ -134,6 +135,7 @@ class XunFeiController extends BaseApiController if (!file_exists($file)) { //return $this->fail('未上传音频文件'); } + */ $file = "https://lihai001.oss-cn-chengdu.aliyuncs.com/media/iat_mp3_16k.mp3"; $audioFile = fopen($file, 'rb'); if ($audioFile === false) { @@ -239,61 +241,27 @@ class XunFeiController extends BaseApiController { header('X-Accel-Buffering: no'); $ttsHostUrl = "wss://tts-api.xfyun.cn/v2/tts"; - $tts = new TtsClient($this->app_id,$this->api_key,$this->api_secret); + $text = request()->file('text'); + if(empty($file)){ + return $this->fail('未上传文本参数'); + } + $business = [ + 'aue' => 'lame', + 'vcn' => 'xiaoyan', + 'auf' => 'audio/L16;rate=16000', + 'speed' => 50, + 'volume'=> 100, + 'pitch' => 50, + 'tte' => 'UTF8', + ]; + $tts = new TtsClient($this->app_id,$this->api_key,$this->api_secret, $business); $date = date('YmdHis', time()); $file_name = $date . '.mp3'; - $audioxxxFile = app()->getRootPath() . '/runtime/storage/audio/' . date('Ymd') . '/' . $file_name; - file_put_contents($audioxxxFile, $tts->request('欢迎使用科大讯飞语音能力,让我们一起用人工智能改变世界')->getBody()->getContents()); + $audioFile = app()->getRootPath() . '/runtime/storage/audio/' . date('Ymd') . '/' . $file_name; + file_put_contents($audioxxxFile, $tts->request($text)->getBody()->getContents()); exit; - $client = new Client($tts->assembleAuthUrl($ttsHostUrl)); - $draft_content = '这是一段测试的音频文件,正常调试接口,这是一段测试的音频文件,正常调试接口'; - $message = [ - 'common' => [ - 'app_id' => $this->app_id, - ], - 'business' => [ - 'aue' => 'raw', - 'auf' => 'audio/L16;rate=16000', - 'vcn' => 'xiaoyan', - 'tte' => 'UTF8', - ], - 'data' => [ - 'status' => 2, - 'text' => base64_encode($draft_content), - ] - ]; - try { - $client->send(json_encode($message, true)); - - //需要以追加的方式进行写文件 - $audioxxxFile = app()->getRootPath() . '/runtime/storage/audio/' . date('Ymd') . '/' . $file_name; - - file_put_contents($audioxxxFile, $tts->request('欢迎使用科大讯飞语音能力,让我们一起用人工智能改变世界')->getBody()->getContents()); - exit; - $audio_file = fopen($audioxxxFile, 'ab'); - $response = $client->receive(); - $response = json_decode($response, true); - do { - //返回的音频需要进行base64解码 - $audio = base64_decode($response['data']['audio']); - fwrite($audio_file, $audio); - //继续接收消息 - $response = $client->receive(); - $response = json_decode($response, true); - } while ($response['data']['status'] != 2); - fclose($audio_file); - return $this->data([ - 'audio_name' => $file_name, - 'audio_url' => './audio/' . $file_name, - ]); - } catch (Exception $e) { - return $this->fail($e->getMessage()); - } finally { - $client->close(); - } - return $this->fail('error'); } } diff --git a/extend/IFlytek/Xfyun/Speech/Config/TtsConfig.php b/extend/IFlytek/Xfyun/Speech/Config/TtsConfig.php index c9f6b3189..69d5bb871 100644 --- a/extend/IFlytek/Xfyun/Speech/Config/TtsConfig.php +++ b/extend/IFlytek/Xfyun/Speech/Config/TtsConfig.php @@ -130,7 +130,7 @@ class TtsConfig implements ConfigInterface $config += [ 'aue' => 'lame', 'sfl' => 1, - 'auf' => null, + 'auf' => 'audio/L16;rate=16000', 'vcn' => 'xiaoyan', 'speed' => 50, 'volume' => 50, @@ -154,6 +154,7 @@ class TtsConfig implements ConfigInterface $this->reg = $config['reg']; $this->rdn = $config['rdn']; $this->ent = $config['ent']; + print_r($config); } /**