>  기사  >  백엔드 개발  >  iFlytek 음성 서비스에 PHP 프로젝트를 연결하는 방법(프로세스)

iFlytek 음성 서비스에 PHP 프로젝트를 연결하는 방법(프로세스)

PHPz
PHPz원래의
2023-04-24 14:53:171405검색

PHP는 웹 애플리케이션, 동적 웹 페이지, 명령줄 스크립트 및 기타 다양한 애플리케이션을 개발하는 데 사용할 수 있는 널리 사용되는 프로그래밍 언어입니다. 인공지능 기술이 계속 발전하면서 음성 기술도 널리 활용되고 있다. 아이플라이텍 보이스(iFlytek Voice)는 음성인식, 음성합성 등의 기능적 인터페이스를 다양한 애플리케이션에 제공할 수 있는 음성 기술 서비스를 제공하는 회사입니다. 이 기사에서는 PHP를 사용하여 iFlytek 음성 서비스에 액세스하여 음성 인식 및 음성 합성 기능을 구현하는 방법을 소개합니다.

1. iFlytek 개방형 플랫폼 등록

iFlytek 음성 서비스에 액세스하려면 먼저 iFlytek 개방형 플랫폼 계정을 등록해야 합니다. 웹사이트 https://www.xfyun.cn/을 방문하여 등록하세요. 등록이 완료되면 개방형 플랫폼 콘솔에서 애플리케이션을 생성하고 AppID, API Key 및 API Secret의 세 가지 매개변수를 얻을 수 있습니다. 이 매개변수는 iFlytek 음성 서비스 API를 호출하는 데 사용됩니다.

2. 음성 인식 인터페이스

iFlytek Voice는 온라인 음성 인식 인터페이스, 오프라인 음성 인식 인터페이스 및 맞춤형 음성 인식 인터페이스를 포함한 다양한 음성 인식 인터페이스를 제공합니다. 음성 인식 인터페이스를 사용하기 전에 마이크나 기타 녹음 장치를 통해 음성을 녹음하고 오디오 형식을 iFlytek 음성 인터페이스의 요구 사항을 충족하는 오디오 형식으로 변환해야 합니다.

  1. 온라인 음성 인식 인터페이스

온라인 음성 인식 인터페이스는 녹음된 오디오 파일을 iFlytek 음성 서버에 전달하는 것을 의미하며, 서버는 음성 인식을 수행하고 인식 결과를 반환합니다. 이 인터페이스를 사용하려면 먼저 인증을 받고 액세스 토큰을 얻어야 합니다. 다음은 샘플 코드입니다.

<?php
$url = "https://api.xfyun.cn/v1/service/v1/iat";
//讯飞开放平台中应用的appID和appSecret 
$appid = "5*****9";
$apiKey = "4****************4e4e4ebc";
$apiSecret = "6cd**************************5ba";
//当前时间戳秒数
$ts = time();
//身份证号码(加密)
$idCard = md5("123456789012345678");
//要转换的音频文件路径
$audioFilePath = "/path/audio.pcm";
if(!file_exists($audioFilePath)){
echo "文件不存在";
die;
}
//二进制方式打开文件
$audioFile = file_get_contents($audioFilePath);
//对音频文件进行base64编码
$audioData = base64_encode($audioFile);
//请求头
$header = array(
"Content-Type:application/x-www-form-urlencoded; charset=utf-8",
"X-Appid: ".$appid,
"X-CurTime: ".$ts,
"X-Param:eyJ0eXBlIjoic3lzdGVtIiwibmFtZSI6ImlhdCJ9",
"X-CheckSum:".md5($apiKey.$ts.$idCard.$audioData.$apiSecret),
);
//请求数据
$data = "audio=".$audioData."&engine_type=cloud";
//发送HTTP POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
//解析结果
$result = json_decode($output, true);
if($result && isset($result["data"])){
echo $result["data"];
}else{
echo "错误信息:".$output;
}
?>

샘플 코드는 컬 라이브러리를 사용하여 HTTP POST 요청을 보내고 녹음된 오디오 파일을 바이너리 스트림으로 변환한 다음 이를 base64로 인코딩하여 요청 매개변수로 iFlytek 음성 서버에 전송합니다. . 동시에 이 코드는 ID 번호(md5 암호화)를 매개변수로 추가하고 이를 요청 헤더의 체크섬 필드에 전달합니다.

  1. 오프라인 음성 인식 인터페이스

오프라인 음성 인식 인터페이스는 녹음된 오디오 파일을 iFlytek Voice에서 제공하는 오프라인 인식 모델과 매칭 및 인식하고 인식 결과를 반환하는 것을 의미합니다. 이 인터페이스를 사용하려면 오프라인 인식 모델을 로컬로 다운로드하고 사전에 문법 파일을 만들어야 합니다.

오프라인 인식 모델 다운로드

iFlytek 공식 웹사이트로 이동하여 해당 언어의 오프라인 인식 모델을 다운로드하고, 개방형 플랫폼 콘솔에서 음성 받아쓰기 모듈을 찾아 모듈 설정 페이지에 들어가서 모델 파일 다운로드 링크를 복사하세요. 로컬 컴퓨터에서 압축을 푼다.

문법 파일 만들기

오프라인 음성 인식을 위한 문법 파일을 지정해야 합니다. 문법 파일은 JSGF(Java Speech Grammar Format) 형식 또는 Bnf(Backus-Naur Form) 형식일 수 있습니다. 다음은 간단한 JSGF 구문 파일 예입니다.

#JSGF V1.0;
grammar sample;
public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;

이 예에서 구문 파일은 조명 켜기, 조명 끄기, 밝기 조정, 색온도 조정, 음악 재생, 음악 일시 중지, 다음 노래 및 명령을 정의합니다. 이전 노래, 볼륨 높이기, 볼륨 낮추기 등 녹음된 오디오 파일의 경우 시스템은 문법 파일에 따라 정의된 명령을 일치시켜 오프라인 음성 인식을 달성합니다.

  1. 맞춤형 음성 인식 인터페이스

맞춤형 음성 인식 인터페이스를 통해 사용자는 자신의 데이터 세트를 기반으로 모델을 훈련한 다음 iFlytek에서 제공하는 맞춤형 음성 인식 인터페이스를 사용하여 인식할 수 있습니다. 맞춤형 음성 인식 인터페이스를 사용하기 전에 먼저 데이터 세트를 업로드하고 훈련해야 합니다. 훈련이 완료된 후 음성 인식을 위한 인터페이스를 호출할 수 있습니다. 인터페이스 호출 방법은 온라인 음성 인식 인터페이스와 유사하므로 다시 설명하지 않습니다.

3. 음성 합성 인터페이스

음성 합성 인터페이스는 지정된 텍스트를 음성 오디오 파일로 합성하고 오디오 파일의 URL을 반환하는 것을 의미합니다. 음성 합성 인터페이스를 사용하려면 인증과 액세스 토큰 획득이 필요합니다. 다음은 샘플 코드입니다.

<?php
$url = "https://api.xfyun.cn/v1/service/v1/tts";
//讯飞开放平台中应用的appID和appSecret 
$appid = "5*****9";
$apiKey = "4****************4e4e4ebc";
$apiSecret = "6cd**************************5ba";
//要合成的文本内容
$text = "讯飞语音,智能语音,畅想未来";
//当前时间戳秒数
$ts = time();
//身份证号码(加密)
$idCard = md5("123456789012345678");
//请求头
$header = array(
"Content-Type:application/x-www-form-urlencoded; charset=utf-8",
"X-Appid: ".$appid,
"X-CurTime: ".$ts,
"X-Param:eyJlbmdpbmVfdHlwZSI6IndlYiIsImRlc2NyaXB0aW9uIjoiMTAwLicipOyAgVGhpcyBtZXRob2Qgd29ya3MgY2FuIGhlYXBzaG90ICogZnJvbSB1c2VyICsgJyMxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjMn
IiwiaXNzdWVkQ29kZSI6IjQ2MzkzIn0=",
"X-CheckSum:".md5($apiKey.$ts.$idCard.$text.$apiSecret),
);
//请求数据
$data = "text=".$text."&auf=audio/L16;rate=16000&voice_name=xiaoyan&engine_type=intp65&speed=50&volume=50&pitch=50";
//发送HTTP POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
//解析结果
$result = json_decode($output, true);
if($result && isset($result["data"])){
echo $result["data"]["url"];
}else{
echo "错误信息:".$output;
}
?>

이 샘플 코드는 컬 라이브러리를 사용하여 HTTP POST 요청을 보내고, 합성할 텍스트 콘텐츠를 요청 매개변수로 iFlytek 음성 서버에 전송합니다. 동시에 음성 샘플링 속도, 음색, 말하기 속도, 볼륨, 피치 및 기타 매개변수도 설정됩니다. 최종 반환은 합성된 오디오 파일 URL입니다.

IV. 요약

이 기사에서는 온라인 음성 인식 인터페이스, 오프라인 음성 인식 인터페이스 및 음성 합성 인터페이스의 구현 프로세스를 포함하여 PHP를 사용하여 iFlytek 음성 서비스에 액세스하는 방법을 소개합니다. 개발자는 애플리케이션에 음성 기술 지원을 추가하려는 요구 사항에 따라 개발에 적합한 인터페이스를 선택할 수 있습니다.

위 내용은 iFlytek 음성 서비스에 PHP 프로젝트를 연결하는 방법(프로세스)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.