使用 Flutter 生成音频文件的音频流生成器

问题描述 投票:0回答:1

我在我的 flutter 项目中使用了 record 包,并将通过 pcm16 位编码器从音频流生成音频文件。就目前而言。稍后我会将此流发送到我的语音转音频端点。这是我的代码库:

  Future<void> startRecording() async {
    try {
      if (await audioRecord.hasPermission()) {
        final file = File('/Users/steffen/Documents/steffen.wav');
        stream = await audioRecord.startStream(const RecordConfig(encoder: AudioEncoder.pcm16bits, echoCancel: true, noiseSuppress: true));
        stream.listen((data) {
           audioDataBuffer.addAll(data.toList());
          file.writeAsBytesSync(data, mode: FileMode.append);
          }, onDone: () => {
              sendFileToBackend()
          },
          onError: (e) => log(e.toString())
        );
        setState(() {
          isRecording = true;
        });
      }
    } catch (e) {
      log(e.toString());
    }
  }

Future<void> stopRecording() async {
    try {
      await audioRecord.stop();

      setState(() {
        isRecording = false;
      });

    } catch (e) {
      log(e.toString());

    }
  }

void sendFileToBackend() async {
    if(audioDataBuffer.isNotEmpty){
      Uri uri = Uri.parse('http://localhost:8000/speech-to-text/');
      var request = http.MultipartRequest('POST', uri);
      //var file = http.MultipartFile('file', stream, data.length);
      var file = http.MultipartFile.fromBytes(
          'file', audioDataBuffer, filename: 'speech.wav',
          contentType: MediaType('application', 'octet-stream'));

我的流可能需要一个标头吗?

flutter dart audio-streaming
1个回答
0
投票

对于任何想要解决同样问题的人来说,这确实是由于缺少文件头引起的。 @Dhalloo 的这个answer用于创建标题。

© www.soinside.com 2019 - 2024. All rights reserved.