44 lines
1.0 KiB
C#
44 lines
1.0 KiB
C#
/// Copyright (c) 2024 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace SherpaOnnx
|
|
{
|
|
public class SpeechSegment
|
|
{
|
|
public SpeechSegment(IntPtr handle)
|
|
{
|
|
Impl impl = (Impl)Marshal.PtrToStructure(handle, typeof(Impl));
|
|
|
|
_start = impl.Start;
|
|
|
|
unsafe
|
|
{
|
|
float* t = (float*)impl.Samples;
|
|
_samples = new float[impl.Count];
|
|
fixed (float* pTarget = _samples)
|
|
{
|
|
for (int i = 0; i < impl.Count; i++)
|
|
{
|
|
pTarget[i] = t[i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public int _start;
|
|
public int Start => _start;
|
|
|
|
private float[] _samples;
|
|
public float[] Samples => _samples;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
struct Impl
|
|
{
|
|
public int Start;
|
|
public IntPtr Samples;
|
|
public int Count;
|
|
}
|
|
}
|
|
}
|