initialize Electron desktop app and remove unused files
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { transcodeToPcmS16le } from '../../packages/server/src/services/hermes/stt-providers/audio-convert'
|
||||
|
||||
function wavS16le(samples: number[], sampleRate: number, channels = 1): Buffer {
|
||||
const dataSize = samples.length * 2
|
||||
const header = Buffer.alloc(44)
|
||||
header.write('RIFF', 0)
|
||||
header.writeUInt32LE(36 + dataSize, 4)
|
||||
header.write('WAVE', 8)
|
||||
header.write('fmt ', 12)
|
||||
header.writeUInt32LE(16, 16)
|
||||
header.writeUInt16LE(1, 20)
|
||||
header.writeUInt16LE(channels, 22)
|
||||
header.writeUInt32LE(sampleRate, 24)
|
||||
header.writeUInt32LE(sampleRate * channels * 2, 28)
|
||||
header.writeUInt16LE(channels * 2, 32)
|
||||
header.writeUInt16LE(16, 34)
|
||||
header.write('data', 36)
|
||||
header.writeUInt32LE(dataSize, 40)
|
||||
|
||||
const data = Buffer.alloc(dataSize)
|
||||
samples.forEach((sample, index) => {
|
||||
data.writeInt16LE(sample, index * 2)
|
||||
})
|
||||
return Buffer.concat([header, data])
|
||||
}
|
||||
|
||||
describe('audio-convert', () => {
|
||||
it('decodes WAV to MCU PCM without ffmpeg', async () => {
|
||||
const wav = wavS16le([0, 16384, -16384, 0], 8000)
|
||||
|
||||
const result = await transcodeToPcmS16le(wav, 'audio/wav', { sampleRate: 16000 })
|
||||
|
||||
expect(result.mimeType).toBe('audio/x-pcm')
|
||||
expect(result.fileName).toBe('audio.pcm')
|
||||
expect(result.audio.length).toBe(16)
|
||||
})
|
||||
|
||||
it('rejects unsupported MCU PCM decode formats', async () => {
|
||||
await expect(
|
||||
transcodeToPcmS16le(Buffer.from('not audio'), 'audio/ogg', { sampleRate: 16000 }),
|
||||
).rejects.toThrow('unsupported audio format for MCU PCM decode')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user