Skip to content

Commit 9ab84da

Browse files
committed
convert speech with ffmpeg
1 parent fb06ab5 commit 9ab84da

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

src/jobs/speecher.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { getConfig } from '../services/config'
33
import logger from '../services/logger'
44
import { DATA_URL_TTL } from '../defaults'
55
import { Incoming } from '../services/incoming'
6+
import { fromBuffer } from '../utils/audio_converter'
67

78
export class SpeecherJob {
89
private service: Incoming
@@ -22,9 +23,9 @@ export class SpeecherJob {
2223
model: config.openaiApiSpeechModel!,
2324
voice: config.openaiApiSpeechVoice!,
2425
input: payload.speech.body,
25-
response_format: 'opus'
2626
})
27-
const buffer = Buffer.from(await audio.arrayBuffer())
27+
const openaiBuffer = Buffer.from(await audio.arrayBuffer())
28+
const { buffer } = await fromBuffer(openaiBuffer)
2829
const { mediaStore } = await config.getStore(phone, config)
2930
const fileName = `${phone}/${id}.ogg`
3031
await mediaStore.saveMediaBuffer(fileName, buffer)

src/utils/audio_converter.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ export default async function (url: string): Promise<{ buffer: Buffer; waveform:
1414
throw `Erro on open ${url}: ${await response?.text()}`
1515
}
1616
const inputBuffer = Buffer.from(await response.arrayBuffer())
17+
return fromBuffer(inputBuffer)
18+
}
19+
20+
export async function fromBuffer(inputBuffer: Buffer): Promise<{ buffer: Buffer; waveform: Uint8Array | undefined }> {
1721
const inputFile = path.join(os.tmpdir(), `${uuid()}`)
1822
const outputFile = path.join(os.tmpdir(), `${uuid()}`)
1923
await writeFileSync(inputFile, inputBuffer)

0 commit comments

Comments
 (0)