lostyazilim
tr.link

Metinden Okumaya Dönüştürme (Text to Speech)

4 Mesajlar 952 Okunma
lstbozum
tr.link

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Bugün bir yerde denk geldim bu konsepte, yazılan metni konuşmaya dönüştüren bir tarz konu idi. Ben de küçük bir araştırma yaptıktan sonra böyle bir hizmeti internet üzerinden bir miktara kadar ücretsiz olarak veren bir site buldum. Ufak dokunuşlar sonucu uzak bilgisayardan bu siteyi kullanarak metni sese dönüştürmenin yolunu keşfettim ve bunu bir php class haline getirip paylaşmak istedim. Belki birilerinin işine yarayabilir diye :)

Kullanılışı çok basit sınıfı sayfaya dahil edip içine konuşmaya çevireceğiniz metni yazın. Sonra sesi hangi sesten dinlemek istediğiniz A,B,C,D veya E olarak yazın ve sonucu ister aynak url si ister HTML5 basit audio şeklinde alın. Sesi indirmek isterseniz de downloadAudio metoduna mp3 dosyasının ismini yazabilirsiniz. Normalde haftalık 6000 karaktere kadar ücretsiz hizmet veriyor ama bu şekilde uzaktan çağırınca limitin dolduğunu hiç görmedim ben. Kodlar aşağıdadır;

tts.php



namespace textToSpeech;

/**
* Class tts
* @package textToSpeech
* @author Abdullah Kaya
*/
class tts
{
private $source;
public $sentence;

/**
* tts constructor.
* @param $sentence - Konuşmaya dökülmesini istediğiniz cümle
*/
public function __construct($sentence)
{
$this->sentence = $sentence;
}

/**
* @param string $speaker - Sesi hangi konuşmacının dilinden duyacağınız. Alabildiği değerler A/B/C/D/E. Varsayılan olarak D
* @return tts
*/
public function getSound($speaker = "D")
{
$sentence = str_replace(" ","%20", $this->sentence);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://freetts.com/Home/PlayAudio?Language=tr-TR&Voice=tr-TR-Standard-'.$speaker.'&TextMessage='.$sentence.'&id=undefined&type=0',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT']
]);

$result = curl_exec($ch);
curl_close($ch);
$find = ['/audio/', '/Home/down'];
$replace = ['https://freetts.com/audio/', 'https://freetts.com/Home/down'];
$result = str_replace($find, $replace, $result);
preg_match('@@', $result, $kaynak);
$this->source = $kaynak[1];
return $this;
}

/**
* @param string $type - Değer source olarak verilirse ses dosyasının direkt url adresini döndürür
* @return string
*/
public function getAudio($type = "audio")
{
return $type == "source" ? $this->source : '';
}

/**
* @param $file_name - İndirilecek olan mp3 uzantılı dosyanın adı
* @return string
*/
public function downloadAudio($file_name)
{
$ch = curl_init($this->source);
curl_setopt_array($ch, [
CURLOPT_HEADER => 0,
CURLOPT_NOBODY => 0,
CURLOPT_TIMEOUT => 60,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_SSL_VERIFYHOST => 0
]);
$output = curl_exec($ch);
curl_close($ch);
if (!file_exists(__DIR__.DIRECTORY_SEPARATOR.$file_name.'.mp3')) {
file_put_contents(__DIR__.DIRECTORY_SEPARATOR.$file_name.'.mp3', $output);
return $file_name.'.mp3 indirildi';
} else {
return $file_name.'.mp3 indirilemedi';
}
}
}


tts.example.php

require_once 'tts.php';

use textToSpeech\tts;

$baslat = new tts("Bu birinci ses");

$getir = $baslat->getSound("A");
$ses = $getir->getAudio();
//$getir->downloadAudio("lorem"); // İndirmek isterseniz bu satırın yorumunu kaldırın
print_r($ses);

$ikinci = $baslat->sentence = "Bu ikinci ses";
$ikinci = $baslat->getSound("B");
$ses = $getir->getAudio();
print_r($ses);

$ucuncu = $baslat->sentence = "Bu üçüncü ses";
$ucuncu = $baslat->getSound("C");
$ses = $getir->getAudio();
print_r($ses);

$dorduncu = $baslat->sentence = "Bu dördüncü ses";
$dorduncu = $baslat->getSound("D");
$ses = $getir->getAudio();
print_r($ses);

$besinci = $baslat->sentence = "Bu da beşinci ses";
$besinci = $baslat->getSound("E");
$ses = $getir->getAudio();
print_r($ses);


Kaynak dosyalar
indir
HeadCMoon xphp

kişi bu mesajı beğendi.


wmaraci
reklam

HeadCMoon HeadCMoon WM Aracı Kullanıcı
  • Üyelik 24.03.2016
  • Yaş/Cinsiyet 38 / E
  • Meslek Grafiker
  • Konum Mersin
  • Ad Soyad S** U**
  • Mesajlar 364
  • Beğeniler 155 / 154
  • Ticaret 12, (%100)
Eğlenceli görünüyor. :)
Abdullahx

kişi bu mesajı beğendi.

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
https://responsivevoice.org/
Abdullahx xphp

kişi bu mesajı beğendi.

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Bu daha iyi gözüküyormuş, bundan haberim yoktu :)
 

 


wmaraci
wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al