Skip to content

Commit 493de7f

Browse files
authored
fix: Improve sampling and bitrate of Voice Recording (#653)
### Description Of Changes fix: change const of Voice Recording to * sampling rate: 11025 * bit rate: 12000 [UIKIT-4209](https://sendbird.atlassian.net/browse/UIKIT-4209)
1 parent 8137b54 commit 493de7f

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

src/hooks/VoiceRecorder/WebAudioUtils.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Thanks to https://codesandbox.io/s/media-recorder-api-downsampling-16k-mp3-encode-using-lame-js-forked-n1pblw
2+
import { VOICE_RECORDER_AUDIO_SAMPLE_RATE } from '../../utils/consts';
23
import { WavHeader, Mp3Encoder } from '../../_externals/lamejs/lame.all';
34

45
function encodeMp3(arrayBuffer: ArrayBuffer): WavHeader {
@@ -39,7 +40,7 @@ function encodeMp3(arrayBuffer: ArrayBuffer): WavHeader {
3940
function downsampleToWav(file: File, callback: (buffer: ArrayBuffer) => void): void {
4041
// Browser compatibility
4142
// https://caniuse.com/?search=AudioContext
42-
const audioCtx = new AudioContext();
43+
const audioCtx = new AudioContext({ sampleRate: VOICE_RECORDER_AUDIO_SAMPLE_RATE });
4344
const fileReader = new FileReader();
4445
fileReader.onload = function (ev) {
4546
// Decode audio

src/hooks/VoiceRecorder/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
BROWSER_SUPPORT_MIME_TYPE_LIST,
77
VOICE_MESSAGE_FILE_NAME,
88
VOICE_MESSAGE_MIME_TYPE,
9-
VOICE_RECORDER_AUDIO_BITS,
9+
VOICE_RECORDER_AUDIO_BIT_RATE,
1010
} from '../../utils/consts';
1111
import useSendbirdStateContext from '../useSendbirdStateContext';
1212

@@ -91,7 +91,7 @@ export const VoiceRecorderProvider = (props: VoiceRecorderProps): React.ReactEle
9191
setIsRecordable(true);
9292
const mediaRecorder = new MediaRecorder(stream, {
9393
mimeType: browserSupportMimeType,
94-
audioBitsPerSecond: VOICE_RECORDER_AUDIO_BITS,
94+
audioBitsPerSecond: VOICE_RECORDER_AUDIO_BIT_RATE,
9595
});
9696
mediaRecorder.ondataavailable = (e) => { // when recording stops
9797
logger.info('VoiceRecorder: Succeeded getting an available data.', e.data);

src/utils/consts.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export const SCROLL_BUFFER = 10;
44
export const VOICE_RECORDER_CLICK_BUFFER_TIME = 250;
55
export const VOICE_RECORDER_DEFAULT_MIN = 1000; // 1 seconds
66
export const VOICE_RECORDER_DEFAULT_MAX = 600000; // 10 minutes
7-
export const VOICE_RECORDER_AUDIO_BITS = 128000;
7+
export const VOICE_RECORDER_AUDIO_BIT_RATE = 12000;
8+
export const VOICE_RECORDER_AUDIO_SAMPLE_RATE = 11025;
89
export const BROWSER_SUPPORT_MIME_TYPE_LIST = ['audio/webm', 'audio/mp4', 'audio/mpeg', 'audio/ogg'];
910

1011
// voice message play

0 commit comments

Comments
 (0)