cion / laravel-text-to-speech
该包创建了一个共享API,以便在不同的TTS服务提供商之间轻松使用文本到语音的功能。
v1.5.2
2023-12-12 23:36 UTC
Requires
- php: ^7.3|^7.4|^8.0
- ext-json: *
- aws/aws-sdk-php: ^3.178
- guzzlehttp/guzzle: ^6.0|^7.0
- illuminate/support: 5.*|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0
- phpunit/phpunit: ^5.0|^6.0|^8.0|^9.0|^10.0
README
这是一个用于Laravel的文本到语音包。其主要目的是使用共享API轻松地将文本转换为语音。
目前,唯一支持的驱动器是Amazon Polly。我们正在探索很快支持Google WaveNet的可能性。欢迎对任何可能的驱动器进行讨论。
💡 使用方法
use Cion\TextToSpeech\Facades\TextToSpeech; // convert text from a text file $path = TextToSpeech::source('path') ->convert('/path/to/text/file'); // you may also pass the string directly to convert() method $path = TextToSpeech::convert('Convert this string.'); // configure where to save the converted output. In this case, it would save the output file in the storage/output.mp3 $path = TextToSpeech::saveTo('output.mp3') ->convert('Hi this is a test.'); // store the converted output directly to S3 $path = TextToSpeech::disk('s3') ->saveTo('output.mp3') ->convert('Store me to S3.'); // convert website articles & blog posts to an audio file $path = TextToSpeech::source('website') ->convert('https://medium.com/cloud-academy-inc/an-introduction-to-aws-polly-s3-and-php-479490bffcbd'); /** * Change the language to be used for the conversion. * Note: every language has a specific voice_id. * For example in ja-JP language we need to use either Mizuki or Takumi. * * We can pass an option array in convert to change the voice_id to be used **/ $options = ['voice' => 'Takumi']; $path = TextToSpeech::language('ja-JP') ->convert('これはテストです', $options); // use the SSML text type in the convert() method. $path = TextToSpeech::ssml() ->convert('<speak>Hi There <break /> This is SSML syntax</speak'); // using speech marks. $output = TextToSpeech::speechMarks(['sentence', 'word', 'viseme', 'ssml']) ->convert('This is a test'); // This will return an array.
🐙 安装
您可以通过composer安装此包
composer require cion/laravel-text-to-speech
该包将自动注册自己。
您可以选择使用以下命令发布配置文件:
php artisan vendor:publish --provider="Cion\TextToSpeech\Providers\TextToSpeechServiceProvider" --tag="config"
接下来,请将这些键添加到您的.env
文件中
TTS_DRIVER=polly TTS_DISK=local TTS_OUTPUT_FORMAT=mp3 TTS_LANGUAGE=en-US TTS_TEXT_TYPE=text AWS_VOICE_ID=Amy AWS_ACCESS_KEY_ID=xxxxxxx AWS_SECRET_ACCESS_KEY=xxxxxxx AWS_DEFAULT_REGION=us-east-1
以下为已发布的配置文件内容
return [ /* * The disk on which to store converted mp3 files by default. Choose * one of the disks you've configured in config/filesystems.php. */ 'disk' => env('TTS_DISK', 'local'), /** * The default audio format of the converted text-to-speech audio file. * Currently, mp3 is the only supported format. */ 'output_format' => env('TTS_OUTPUT_FORMAT', 'mp3'), /** * The driver to be used for converting text-to-speech * You can choose polly, or null as of now. */ 'driver' => env('TTS_DRIVER', 'polly'), /** * The default language to be used. * * You may use any of the following: * * arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, en-GB-WLS, en-IN, en-US, * es-ES, es-MX, es-US, fr-CA, fr-FR, is-IS, it-IT, ja-JP, hi-IN, ko-KR, nb-NO, * nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sv-SE, tr-TR */ 'language' => env('TTS_LANGUAGE', 'en-US'), 'audio' => [ /** * Default path to store the output file. */ 'path' => 'TTS', /** * Default filename formatter. */ 'formatter' => \Cion\TextToSpeech\Formatters\DefaultFilenameFormatter::class, ], /** * The default source that will be used. */ 'default_source' => 'text', /** * The default text type to be used. * You can use either text or ssml. */ 'text_type' => env('TTS_TEXT_TYPE', 'text'), /** * The source that can be used. * You can create your own source by implementing the Source interface. * * @see \Cion\TextToSpeech\Contracts\Source */ 'sources' => [ 'text' => \Cion\TextToSpeech\Sources\TextSource::class, 'path' => \Cion\TextToSpeech\Sources\PathSource::class, 'website' => \Cion\TextToSpeech\Sources\WebsiteSource::class, ], 'services' => [ 'polly' => [ /** * Voice ID to use for the synthesis. * You may use any of the following:. * * Aditi, Amy, Astrid, Bianca, Brian, Camila, Carla, Carmen, Celine, * Chantal, Conchita, Cristiano, Dora, Emma, Enrique, Ewa, Filiz, * Geraint, Giorgio, Gwyneth, Hans, Ines, Ivy, Jacek, Jan, Joanna, * Joey, Justin, Karl, Kendra, Kimberly, Lea, Liv, Lotte, Lucia, * Lupe, Mads, Maja, Marlene, Mathieu, Matthew, Maxim, Mia, Miguel, * Mizuki, Naja, Nicole, Penelope, Raveena, Ricardo, Ruben, Russell, * Salli, Seoyeon, Takumi, Tatyana, Vicki, Vitoria, Zeina, Zhiyu. */ 'voice_id' => env('AWS_VOICE_ID', 'Amy'), /** * You can request any or all of the speech mark types, but leave it empty if you don't use speech marks. * You may add any of the following:. * * sentence, word, viseme, ssml */ 'speech_marks' => [], /** * IAM Credentials from AWS. */ 'credentials' => [ 'key' => env('AWS_ACCESS_KEY_ID', ''), 'secret' => env('AWS_SECRET_ACCESS_KEY', ''), ], 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'version' => 'latest', ], ], ];
🧪 测试
composer test
📈 更新日志
请参阅我们的发布页面,了解最近的变化信息。
💪🏼 贡献
请参阅CONTRIBUTING以获取详细信息。
🏝 社区
如有帮助、最佳实践讨论或其他可搜索的对话,请参阅
与其他使用此包的人闲聊
🚨 安全
请参阅我们的安全策略,了解如何报告安全漏洞。
🙏🏼 致谢
📄 许可证
MIT许可证(MIT)。请参阅LICENSE以获取更多信息。
由Meema, Inc.用❤️制作