PHP ialah bahasa pengaturcaraan yang digunakan secara meluas yang boleh digunakan untuk membangunkan aplikasi web, halaman web dinamik, skrip baris arahan dan pelbagai aplikasi lain. Memandangkan teknologi kecerdasan buatan terus berkembang, teknologi suara juga telah digunakan secara meluas. iFlytek Voice ialah syarikat yang menyediakan perkhidmatan teknologi suara Ia boleh menyediakan antara muka berfungsi seperti pengecaman pertuturan dan sintesis pertuturan untuk pelbagai aplikasi. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengakses perkhidmatan suara iFlytek untuk melaksanakan pengecaman pertuturan dan fungsi sintesis pertuturan.
1. Daftar untuk Platform Terbuka iFlytek
Untuk mengakses perkhidmatan suara iFlytek, anda perlu mendaftar akaun platform terbuka iFlytek terlebih dahulu, layari laman web https://www.xfyun.cn/ untuk mendaftar. Selepas pendaftaran selesai, anda boleh membuat aplikasi dalam konsol platform terbuka dan mendapatkan tiga parameter AppID, Kunci API dan Rahsia API Parameter ini akan digunakan untuk memanggil API perkhidmatan suara iFlytek.
2. Antara muka pengecaman pertuturan
iFlytek Voice menyediakan pelbagai antara muka pengecaman pertuturan, termasuk antara muka pengecaman pertuturan dalam talian, antara muka pengecaman pertuturan luar talian dan antara muka pengecaman pertuturan tersuai. Sebelum menggunakan antara muka pengecaman pertuturan, anda perlu merakam suara melalui mikrofon atau peranti rakaman lain dan menukar format audio kepada format audio yang memenuhi keperluan antara muka suara iFlytek.
Antara muka pengecaman pertuturan dalam talian merujuk kepada penghantaran fail audio yang dirakam ke pelayan suara iFlytek, dan pelayan melakukan pengecaman pertuturan dan mengembalikan pengecaman keputusan. Menggunakan antara muka ini memerlukan pengesahan terlebih dahulu dan mendapatkan token akses. Berikut ialah kod sampel:
<?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; } ?>
Kod sampel menggunakan perpustakaan curl untuk menghantar permintaan HTTP POST dan menukar fail audio yang dirakam kepada strim binari, yang kemudiannya dikodkan base64 dan diluluskan sebagai permintaan parameter kepada pelayan suara iFlytek. Pada masa yang sama, kod ini juga menambah nombor ID (penyulitan md5) sebagai parameter dan menghantarnya ke dalam medan checksum pengepala permintaan.
Antara muka pengecaman pertuturan luar talian merujuk pada pemadanan dan pengecaman fail audio yang dirakam dengan model pengecaman luar talian yang disediakan oleh iFlytek dan mengembalikan hasil pengecaman . Menggunakan antara muka ini memerlukan muat turun model pengecaman luar talian secara setempat dan mencipta fail tatabahasa terlebih dahulu.
Muat turun model pengecaman luar talian
Pergi ke tapak web rasmi iFlytek untuk memuat turun model pengecaman luar talian bagi bahasa yang sepadan, cari modul imlak suara dalam konsol platform terbuka, masukkan halaman tetapan modul , dan salin pautan muat turun fail model Pergi ke komputer setempat anda dan nyahzipnya.
Buat fail tatabahasa
Anda perlu menentukan fail tatabahasa untuk pengecaman pertuturan luar talian Fail tatabahasa boleh dalam format JSGF (Format Tatabahasa Java) atau Bnf (Borang Backus-Naur). format. Berikut ialah contoh fail sintaks JSGF yang mudah:
#JSGF V1.0; grammar sample; public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;
Dalam contoh ini, fail sintaks mentakrifkan arahan, termasuk menghidupkan lampu, mematikan lampu, melaraskan kecerahan, melaraskan suhu warna, memainkan muzik dan menjeda muzik , lagu seterusnya, lagu sebelumnya, kelantangan naik dan kelantangan, dsb. Untuk fail audio yang dirakam, sistem akan memadankan arahan yang ditentukan mengikut fail tatabahasa untuk mencapai pengecaman pertuturan luar talian.
Antara muka pengecaman pertuturan tersuai membolehkan pengguna melatih model berdasarkan set data mereka sendiri, dan kemudian menggunakan antara muka pengecaman pertuturan tersuai yang disediakan oleh iFlytek Kenal pasti. Sebelum menggunakan antara muka pengecaman pertuturan tersuai, anda perlu memuat naik dan melatih set data terlebih dahulu Selepas latihan selesai, anda boleh memanggil antara muka untuk pengecaman pertuturan. Kaedah panggilan antara muka adalah serupa dengan antara muka pengecaman pertuturan dalam talian dan tidak akan diterangkan lagi.
3. Antara muka sintesis pertuturan
Antara muka sintesis pertuturan bermaksud mensintesis teks yang ditentukan ke dalam fail audio pertuturan dan mengembalikan URL fail audio. Menggunakan antara muka sintesis pertuturan memerlukan pengesahan dan mendapatkan token akses. Seterusnya ialah kod sampel:
<?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; } ?>
Kod sampel ini menggunakan perpustakaan curl untuk menghantar permintaan HTTP POST dan menghantar kandungan teks untuk disintesis ke pelayan suara iFlytek sebagai parameter permintaan. Pada masa yang sama, kadar pensampelan suara, timbre, kelajuan pertuturan, kelantangan, pic dan parameter lain juga ditetapkan. Pulangan terakhir ialah URL fail audio yang disintesis.
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk mengakses perkhidmatan suara iFlytek, termasuk proses pelaksanaan antara muka pengecaman pertuturan dalam talian, antara muka pengecaman pertuturan luar talian dan antara muka sintesis pertuturan. Pembangun boleh memilih antara muka yang sesuai untuk pembangunan berdasarkan keperluan mereka untuk menambah sokongan teknologi suara pada aplikasi mereka.
Atas ialah kandungan terperinci Bagaimana untuk menyambungkan projek php ke perkhidmatan suara iFlytek (proses). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!