API Google Speech работает нормально, когда я использую 'languageCode' => 'en-US'
с английским аудиофайлом. Но при использовании 'languageCode' => 'ja-JP'
с японским аудиофайлом, возвращающий битый текст "Transcription: ã‚‚ã—ã‚‚ã—è² ã‘ホンダã—ã¦ã‚‚ã—ã‚‚ã—"
Пример кода от Google:
# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';
# Imports the Google Cloud client library
use Google\Cloud\Speech\SpeechClient;
# Your Google Cloud Platform project ID
$projectId = 'YOUR_PROJECT_ID';
# Instantiates a client
$speech = new SpeechClient([
'projectId' => $projectId,
'languageCode' => 'en-US',
]);
# The name of the audio file to transcribe
$fileName = __DIR__ . '/resources/audio.raw';
# The audio file's encoding and sample rate
$options = [
'encoding' => 'LINEAR16',
'sampleRateHertz' => 16000,
];
# Detects speech in the audio file
$results = $speech->recognize(fopen($fileName, 'r'), $options);
foreach ($results[0]->alternatives() as $alternative) {
echo 'Transcription: ' . $alternative['transcript'] . PHP_EOL;
}
Я проверил
Клиентские библиотеки Cloud Speech API и последовал примеру от Google.
Google Speech API правильно возвращает ответ на японском языке $results
, Тип кодировки по умолчанию — UTF-8. Это ясно написано в документации. Google \ Cloud \ Language \ LanguageClient
Проблема была echo
в foreach
который ломает японский характер. В моем случае мне на самом деле не нужно эхо, а не использовать $results
, Так что теперь у меня все работает нормально.
Возможно, если кто-то захочет использовать echo
Чтобы показать результат, следующие ссылки могут быть полезны.
Благодарю.
Других решений пока нет …