Skip to content
This repository has been archived by the owner on Mar 7, 2024. It is now read-only.

mod_audio_fork silent sound to client when play message from lws #106

Open
TechGuyVN opened this issue Mar 7, 2023 · 0 comments
Open

mod_audio_fork silent sound to client when play message from lws #106

TechGuyVN opened this issue Mar 7, 2023 · 0 comments

Comments

@TechGuyVN
Copy link

TechGuyVN commented Mar 7, 2023

Dear Friend,

I made an callbot using freeswitch & my backend.
Use flow:

  • fork audio to our ASR backend
  • send back message content base64 audio encode string
  • decode base64 message and store file temp
  • play sound to client

Our problem is:
if test 1/2 call is okay no problem
if increase concurrent call with long audio ( base64 test bigger about 0.6Mb) sound become silent when playback to client
I see those log:

1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:06.881613 99.80% [DEBUG] switch_ivr_play_say.c:1566 Codec Activated L16@8000hz 1 channels 20ms 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:11.381619 99.67% [DEBUG] switch_ivr_play_say.c:2015 done playing file /tmp/1e4abe06-e9af-4090-9ecd-92b424d192b7_49.tmp.r8 2023-03-07 00:38:16.501604 99.57% [DEBUG] lws_glue.cpp:54 (27) processIncomingMessage - received playAudio message and final = 1 and audioDuration = 5.070000 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:16.521622 99.57% [DEBUG] mod_audio_fork.c:21 responseHandler: sending event payload: {"audioContentType":"raw","sampleRate":8000,"audioDuration":4.07,"textContent":"sorry i call from hotline of company xxx please give me some minutes to introduce our services","file":"/tmp/1e4abe06-e9af-4090-9ecd-92b424d192b7_50.tmp.r8"}. 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:16.621606 99.57% [DEBUG] switch_ivr.c:632 sofia/external/0765992824 Command Execute [depth=1] playback(/tmp/1e4abe06-e9af-4090-9ecd-92b424d192b7_50.tmp.r8) 1e4abe06-e9af-4090-9ecd-92b424d192b7 EXECUTE [depth=1] sofia/external/0765992824 playback(/tmp/1e4abe06-e9af-4090-9ecd-92b424d192b7_50.tmp.r8) 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:16.621606 99.57% [DEBUG] switch_ivr_play_say.c:1566 Codec Activated L16@8000hz 1 channels 20ms 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:18.501607 99.57% [ERR] lws_glue.cpp:620 (26) dropping packets! 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:18.501607 99.57% [ERR] lws_glue.cpp:620 (27) dropping packets! 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:20.501649 99.53% [ERR] lws_glue.cpp:620 (26) dropping packets! 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:20.501649 99.53% [ERR] lws_glue.cpp:620 (27) dropping packets! 1e4abe06-e9af-4090-9ecd-92b424d192b7 2023-03-07 00:38:20.701655 99.53% [DEBUG] switch_ivr_play_say.c:2015 done playing file /tmp/1e4abe06-e9af-4090-9ecd-92b424d192b7_50.tmp.r8

in 620 core of lws_glue.cpp it like that:
`
uint8_t data[SWITCH_RECOMMENDED_BUFFER_SIZE];
switch_frame_t frame = { 0 };
frame.data = data;
frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
while (switch_core_media_bug_read(bug, &frame, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) {
if (frame.datalen) {
spx_uint32_t out_len = available >> 1; // space for samples which are 2 bytes
spx_uint32_t in_len = frame.samples;

        speex_resampler_process_interleaved_int(tech_pvt->resampler,
          (const spx_int16_t *) frame.data,
          (spx_uint32_t *) &in_len,
          (spx_int16_t *) ((char *) pAudioPipe->binaryWritePtr()),
          &out_len);

        if (out_len > 0) {
          // bytes written = num samples * 2 * num channels
          size_t bytes_written = out_len << tech_pvt->channels;
          pAudioPipe->binaryWritePtrAdd(bytes_written);
          available = pAudioPipe->binarySpaceAvailable();
          dirty = true;
        }
        if (available < pAudioPipe->binaryMinSpace()) {
          if (!tech_pvt->buffer_overrun_notified) {
            tech_pvt->buffer_overrun_notified = 1;
            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "(%u) dropping packets!\n",
              tech_pvt->id);
            tech_pvt->responseHandler(session, EVENT_BUFFER_OVERRUN, NULL);
          }
          break;
        }
      }
    }

`

I guess buffer limit read text too short so i increase it to 5Mb but not working:
`/* discard incoming text messages over the socket that are longer than this */

#define MAX_RECV_BUF_SIZE (5065600)
#define RECV_BUF_REALLOC_SIZE (16 * 1024)
`

can you help me this case

@TechGuyVN TechGuyVN changed the title ';l audio_fork_mod silent sound to client when play message from lws Mar 7, 2023
@TechGuyVN TechGuyVN changed the title audio_fork_mod silent sound to client when play message from lws mod_audio_fork silent sound to client when play message from lws Mar 7, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant