wave_writer.dart 628 字节
// Copyright (c)  2024  Xiaomi Corporation
import 'dart:ffi';
import 'dart:typed_data';
import 'package:ffi/ffi.dart';

import './sherpa_onnx_bindings.dart';

bool writeWave(
    {required String filename,
    required Float32List samples,
    required int sampleRate}) {
  final Pointer<Utf8> filenamePtr = filename.toNativeUtf8();

  final n = samples.length;
  final Pointer<Float> p = calloc<Float>(n);

  final pList = p.asTypedList(n);
  pList.setAll(0, samples);

  int ok =
      SherpaOnnxBindings.writeWave?.call(p, n, sampleRate, filenamePtr) ?? 0;

  calloc.free(p);
  calloc.free(filenamePtr);

  return ok == 1;
}