Google 语音中的日语文本错误 api php

Japanese text error in Google speech api php

Google 当我将 'languageCode' => 'en-US' 与英语音频文件一起使用时,语音 api 对我来说工作正常。但是当对日语音频文件使用 '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 Client Libraries 并遵循 Google 中的示例。

Google 语音 API 在 $results 中正确返回日语响应。默认编码类型为 UTF-8。它清楚地写在文档中。 Google\Cloud\Language\LanguageClient

问题出在 foreach 中的 echo,它破坏了日文字符。在我的例子中,我实际上不需要回显而不是使用 $results。所以现在它对我来说工作正常。

也许,如果有人想使用 echo 来显示结果,下面的链接会有所帮助。

  1. PHP Japanese echo string becomes question marks
  2. How to display Japanese characters on a php page?

谢谢。