| 51 | // See https://github.com/pybind/pybind11/issues/1042#issuecomment-642215028 |
| 52 | template <typename Sequence> |
| 53 | inline py::array_t<typename Sequence::value_type> as_pyarray(Sequence &&seq) { |
| 54 | auto size = seq.size(); |
| 55 | auto data = seq.data(); |
| 56 | std::unique_ptr<Sequence> seq_ptr = |
| 57 | whisper::make_unique<Sequence>(std::move(seq)); |
| 58 | auto capsule = py::capsule(seq_ptr.get(), [](void *p) { |
| 59 | std::unique_ptr<Sequence>(reinterpret_cast<Sequence *>(p)); |
| 60 | }); |
| 61 | seq_ptr.release(); |
| 62 | return py::array(size, data, capsule); |
| 63 | } |
| 64 | } // namespace whisper |
| 65 | |
| 66 | struct WavFileWrapper { |