当前位置: 首页 > 知识库问答 >
问题:

如何在Flatter的语音到文本API中使用本地音频文件而不是uri?

韦高格
2023-03-14

我正在使用GoogleAppis包中的Google Speech To Text API。但我没有找到任何文档(用于dart

    final httpClient = await clientViaServiceAccount(_credentials, _scopes);
    try {
      final speech2Text = SpeechApi(httpClient);

      final _json = {
        "config": {
          "encoding": "FLAC",
          "sampleRateHertz": 16000,
          "languageCode": "en-US",
          "enableWordTimeOffsets": false
        },
        "audio": {"uri": "gs://cloud-samples-tests/speech/brooklyn.flac"}
      };
      final _recognizeRequest = RecognizeRequest.fromJson(_json);
      await speech2Text.speech.recognize(_recognizeRequest).then((response) {
        for (var result in response.results) {
          print(result.toJson());
        }
      });
    } finally {
      httpClient.close();
    }
  }

共有1个答案

轩辕瑞
2023-03-14

我最终通过查看这个google_speech包的示例来做到这一点。

  1. 将音频文件作为资产添加到pubspec中。yaml:
assets:
- assets/brooklyn.flac
Future<void> _copyFileFromAssets(String name) async {
  var data = await rootBundle.load('assets/$name');
  final directory = await getApplicationDocumentsDirectory();
  final path = directory.path + '/$name';
  await File(path).writeAsBytes(
      data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
Future<List<int>> _getAudioContent(String name) async {
  final directory = await getApplicationDocumentsDirectory();
  final path = directory.path + '/$name';
  if (!File(path).existsSync()) {
    await _copyFileFromAssets(name);
  }
  return File(path).readAsBytesSync().toList();
}
final audio = await _getAudioContent('brooklyn.flac');
String audio64 = base64Encode(audio);
final _json = {
   "config": {
      "encoding": "FLAC",
      "sampleRateHertz": 16000,
      "languageCode": "en-US",
      "enableWordTimeOffsets": false
      },
      // "audio": {"uri": "gs://cloud-samples-tests/speech/brooklyn.flac"}
   "audio": {"content": audio64},
   };

我希望这对有类似问题的人有所帮助。

 类似资料:
  • 使用Microsoft语音API转录中/大型音频文件(每个文件约6-10分钟)的最佳方式是什么?比如批量音频文件转录? 我使用了https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-to-text-sample中提供的代码,用于连续转录语音,但它在某个时候停止转录。转录有任何限制吗?我只使用免

  • 我似乎在这上面找不到任何东西。iOS7中是否有任何Siri类或API允许您进行文本到语音转换?我所要做的就是如下所示: 然后让Siri从我的应用程序中说出来。 看来我们应该有能力做到这一点,不是吗?似乎是一件微不足道的事情。

  • 问题内容: 我正在模拟器中测试我的应用。 我正在下载文件,并以这种方式获取本地文件: 现在,我想使用AVAudioPlayer播放此文件,但是我总是遇到此错误: 播放代码: 我应该如何播放? 问题答案: 在iOS8下,您保存的路径在启动期间将无效。您看到的ID“ E5F13797-A6A8-48A1-B3C3-FBC3D7A03151”将随每次启动而更改。 解决方案是保存文件名而不是完整路径,并通

  • 我能够使用链接中包含的教程转录音频(https://cloud.google.com/speech-to-text/docs/async-recognize),但它仅适用于WAV格式的音频。我想让它与MP3或M4A格式的音频一起工作。 我已经测试了链接中包含的所有可能性(https://github.com/GoogleCloudPlatform/java-docs-samples/blob/ma

  • 有没有任何开源项目或库(在java或c),我可以用来将文本转换为用户语音。

  • 带有en-us语音的AVSpeechsynthesizer是“A”的发音,是“大写字母A”,但只想要“A”,怎么能做到呢?