audio

package
v0.0.0-...-0e3e81a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2020 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Ptime10ms = time.Millisecond * 10
	Ptime20ms = time.Millisecond * 20
	Ptime30ms = time.Millisecond * 30

	Ptime10 = 10
	Ptime20 = 20
	Ptime30 = 30
)
View Source
const (
	DefaultLimit = 0
)

Variables

View Source
var (
	ErrPCMChunkNotFound = errors.New("PCM chunk not found")
	ErrPCMNot16Bit      = errors.New("PCM is not 16-bit")
	ErrClosed           = errors.New("closed")
)

Functions

func PtimeDuration

func PtimeDuration(ptime int) time.Duration

Types

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer between Reader and Writer. Once internal frame buffer is full, it blocks until either the Reader or Writer processes the next frame.

func NewBuffer

func NewBuffer(sampleRate, ptime, maxFrames int) (*Buffer, error)

func (*Buffer) Alloc

func (f *Buffer) Alloc() []int16

func (*Buffer) Close

func (f *Buffer) Close() error

func (*Buffer) Elapsed

func (b *Buffer) Elapsed() time.Duration

func (*Buffer) FrameSize

func (f *Buffer) FrameSize() int

func (*Buffer) Ptime

func (f *Buffer) Ptime() time.Duration

func (*Buffer) ReadFrame

func (f *Buffer) ReadFrame() ([]int16, error)

func (*Buffer) Release

func (f *Buffer) Release(b []int16)

func (*Buffer) SampleRate

func (f *Buffer) SampleRate() int

func (*Buffer) UnblockWriter

func (f *Buffer) UnblockWriter() bool

func (*Buffer) Write

func (f *Buffer) Write(p []int16) error

func (*Buffer) WriteBlocking

func (f *Buffer) WriteBlocking(p []int16) error

func (*Buffer) WriteFinal

func (f *Buffer) WriteFinal() error

type BufferPool

type BufferPool interface {
	BufferSize() int

	Get() []int16

	Put(p []int16)
}

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

Pool contains logic of reusing byte slices of various size.

func NewBufferPool

func NewBufferPool() *Pool

func (*Pool) Get

func (p *Pool) Get(clockSpeed int, ptime int) (BufferPool, error)

type RawReader

type RawReader interface {
	Read(p []int16) (n int, err error)
}

type Reader

type Reader interface {
	io.Closer

	Elapsed() time.Duration

	// Clock speed in hertz. (i.e. 16000 for 16Khz)
	SampleRate() int

	// Number of 16bit integers per frame.
	FrameSize() int

	// Frame duration.
	Ptime() time.Duration

	// Release buffer to allow it to be recycled.
	Release(p []int16)

	// Allocate a new Frame.
	Alloc() []int16

	// ReadFrame the next Frame.
	ReadFrame() ([]int16, error)
}

16bit PCM reader.

type ReplayReader

type ReplayReader struct {
	// contains filtered or unexported fields
}

Rewind reader keeps a buffer of recently read frames. This comes in handy for using Voice-Activity Detection (VAD) to determine utterance windows. Being able to look back "x" number of frames to catch the true beginning of the utterance.

Wraps the backing reader which it utilizes for Buffer management. Buffers are released internally once the buffer is removed from the internal history buffer. When "Close" is called, the entire history buffer is released to the backing reader.

func NewReplayReader

func NewReplayReader(reader Reader, duration time.Duration) *ReplayReader

func (*ReplayReader) Alloc

func (r *ReplayReader) Alloc() []int16

Allocate a new Frame.

func (*ReplayReader) Close

func (r *ReplayReader) Close() error

func (*ReplayReader) Elapsed

func (w *ReplayReader) Elapsed() time.Duration

func (*ReplayReader) FrameSize

func (r *ReplayReader) FrameSize() int

Number of 16bit integers per frame.

func (*ReplayReader) Ptime

func (r *ReplayReader) Ptime() time.Duration

Frame duration.

func (*ReplayReader) ReadFrame

func (r *ReplayReader) ReadFrame() ([]int16, error)

ReadFrame the next Frame.

func (*ReplayReader) Release

func (r *ReplayReader) Release(p []int16)

Release buffer to allow it to be recycled.

func (*ReplayReader) Replay

func (r *ReplayReader) Replay(limit int, fn func(p []int16)) (n int)

func (*ReplayReader) SampleRate

func (r *ReplayReader) SampleRate() int

Clock speed in hertz. (i.e. 16000 for 16Khz)

type SeekReader

type SeekReader struct {
	io.ReadSeeker
	io.Closer
	// contains filtered or unexported fields
}

func NewSeekReader

func NewSeekReader(reader io.ReadCloser) *SeekReader

func (*SeekReader) Close

func (s *SeekReader) Close() error

func (*SeekReader) Read

func (s *SeekReader) Read(b []byte) (int, error)

func (*SeekReader) Seek

func (s *SeekReader) Seek(offset int64, whence int) (int64, error)

type WavReader

type WavReader struct {
	// contains filtered or unexported fields
}

func OpenWav

func OpenWav(reader io.ReadCloser, ptime int) (*WavReader, error)

func OpenWavFile

func OpenWavFile(filename string, ptime int) (*WavReader, error)

func (*WavReader) Alloc

func (w *WavReader) Alloc() []int16

func (*WavReader) Close

func (w *WavReader) Close() error

func (*WavReader) Elapsed

func (w *WavReader) Elapsed() time.Duration

func (*WavReader) FrameSize

func (f *WavReader) FrameSize() int

func (*WavReader) IsClosed

func (w *WavReader) IsClosed() bool

func (*WavReader) Ptime

func (w *WavReader) Ptime() time.Duration

func (*WavReader) Read

func (w *WavReader) Read(buffer []int16) (n int, err error)

func (*WavReader) ReadFrame

func (w *WavReader) ReadFrame() ([]int16, error)

func (*WavReader) Release

func (w *WavReader) Release(p []int16)

func (*WavReader) SampleRate

func (f *WavReader) SampleRate() int

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL