Я создал услугу PHP, которая называет Google Cloud Text-To-Speek и пишет аудиоконтент (Base64-Decode) непосредственно в MP3-файл. Когда я предпочитаю жесткую фразу (например, «ein moment der ruhe…» m, которая является той же фразой, которую выявляют как динамический текст), она отличается от того, что не потеряны-но как только начинается мой динамический текст, первые 1–2 слова всегда исчезают или режут. Таким образом, они больше не первые слова, но все еще «исчезли в». Что еще я могу попытаться гарантировать, что самый первый слог динамического текста не потерян? < /P>
namespace App\Services;
class GoogleTtsService extends TtsService
{
private const API_URL = 'https://texttospeech.googleapis.com/v1/text:synthesize';
public function synthesize(string $text, array $options, string $outputPath, string $apiKey): bool
{
$breakMs = defined('TTS_INITIAL_BREAK_MS') ? TTS_INITIAL_BREAK_MS : 100;
// This hard-coded phrase plays fine
$ssml = ''
. 'Ein Moment der Ruhe...'
. '
'
. htmlspecialchars($text, ENT_QUOTES|ENT_XML1, 'UTF-8') // this never plays fine
. '';
$payload = [
'input' => ['ssml' => $ssml],
'voice' => [
'languageCode' => $options['language'] ?? 'de-DE',
'name' => $options['voice'] ?? 'de-DE-Standard-A'
],
'audioConfig' => [
'audioEncoding' => 'MP3',
'speakingRate' => $options['speed'] ?? 1.0
]
];
$response = $this->postJson(self::API_URL . '?key=' . urlencode($apiKey), $payload);
if (empty($response['audioContent'])) {
return false;
}
$audioData = base64_decode($response['audioContent']);
return file_put_contents($outputPath, $audioData) !== false;
}
}
< /code>
Соответствующий журнал отладки: < /p>
[28-Jun-2025 00:15:21] TTS chunk for job 311: text length=4159
[28-Jun-2025 00:15:21] SSML sent (first 100 chars):
Ein Moment der Ruhe...
Ein Moment der Ruhe am Morgen. Ein bewu…
Подробнее здесь: https://stackoverflow.com/questions/796 ... ould-think
Google TTS крадет первые несколько MS сценария - но не так, как я бы думал ⇐ Php
Кемеровские программисты php общаются здесь
1751120821
Anonymous
Я создал услугу PHP, которая называет Google Cloud Text-To-Speek и пишет аудиоконтент (Base64-Decode) непосредственно в MP3-файл. Когда я предпочитаю жесткую фразу (например, «ein moment der ruhe…» m, которая является той же фразой, которую выявляют как динамический текст), она отличается от того, что не потеряны-но как только начинается мой динамический текст, первые 1–2 слова всегда исчезают или режут. Таким образом, они больше не первые слова, но все еще «исчезли в». Что еще я могу попытаться гарантировать, что самый первый слог динамического текста не потерян? < /P>
namespace App\Services;
class GoogleTtsService extends TtsService
{
private const API_URL = 'https://texttospeech.googleapis.com/v1/text:synthesize';
public function synthesize(string $text, array $options, string $outputPath, string $apiKey): bool
{
$breakMs = defined('TTS_INITIAL_BREAK_MS') ? TTS_INITIAL_BREAK_MS : 100;
// This hard-coded phrase plays fine
$ssml = ''
. 'Ein Moment der Ruhe...'
. '
'
. htmlspecialchars($text, ENT_QUOTES|ENT_XML1, 'UTF-8') // this never plays fine
. '';
$payload = [
'input' => ['ssml' => $ssml],
'voice' => [
'languageCode' => $options['language'] ?? 'de-DE',
'name' => $options['voice'] ?? 'de-DE-Standard-A'
],
'audioConfig' => [
'audioEncoding' => 'MP3',
'speakingRate' => $options['speed'] ?? 1.0
]
];
$response = $this->postJson(self::API_URL . '?key=' . urlencode($apiKey), $payload);
if (empty($response['audioContent'])) {
return false;
}
$audioData = base64_decode($response['audioContent']);
return file_put_contents($outputPath, $audioData) !== false;
}
}
< /code>
Соответствующий журнал отладки: < /p>
[28-Jun-2025 00:15:21] TTS chunk for job 311: text length=4159
[28-Jun-2025 00:15:21] SSML sent (first 100 chars):
Ein Moment der Ruhe...
Ein Moment der Ruhe am Morgen. Ein bewu…
Подробнее здесь: [url]https://stackoverflow.com/questions/79683035/google-tts-stealing-the-first-few-ms-of-a-script-but-not-the-way-i-would-think[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия