diff --git a/mod_azure_tts/azure_glue.cpp b/mod_azure_tts/azure_glue.cpp index 687be96..3b5081e 100644 --- a/mod_azure_tts/azure_glue.cpp +++ b/mod_azure_tts/azure_glue.cpp @@ -135,23 +135,12 @@ extern "C" { return SWITCH_STATUS_FALSE; } - if (a->session_id) { + if (a->rate != 8000 /*Hz*/) { int err; - switch_codec_implementation_t read_impl; - - /* lock and unlock session */ - switch_core_session_t *psession = switch_core_session_locate(a->session_id); - switch_core_session_get_read_impl(psession, &read_impl); - switch_core_session_rwunlock(psession); - - uint32_t samples_per_second = !strcasecmp(read_impl.iananame, "g722") ? read_impl.actual_samples_per_second : read_impl.samples_per_second; - a->samples_rate = samples_per_second; - if (samples_per_second != 8000 /*Hz*/) { - a->resampler = speex_resampler_init(1, 8000, samples_per_second, SWITCH_RESAMPLE_QUALITY, &err); - if (0 != err) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error initializing resampler: %s.\n", speex_resampler_strerror(err)); - return SWITCH_STATUS_FALSE; - } + a->resampler = speex_resampler_init(1, 8000, a->rate, SWITCH_RESAMPLE_QUALITY, &err); + if (0 != err) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error initializing resampler: %s.\n", speex_resampler_strerror(err)); + return SWITCH_STATUS_FALSE; } } @@ -276,9 +265,7 @@ extern "C" { return SWITCH_STATUS_SUCCESS; } // azure returned 8000hz 16 bit data, we have to take enough data based on call sample rate. - size_t size = a->samples_rate ? - std::min((*datalen/(2 * a->samples_rate / 8000)), bufSize) : - std::min((*datalen/2), bufSize); + size_t size = std::min((*datalen/(2 * a->rate / 8000)), bufSize); pcm_data.insert(pcm_data.end(), cBuffer->begin(), cBuffer->begin() + size); cBuffer->erase(cBuffer->begin(), cBuffer->begin() + size); switch_mutex_unlock(a->mutex); diff --git a/mod_azure_tts/mod_azure_tts.c b/mod_azure_tts/mod_azure_tts.c index 26a6c45..13562a8 100644 --- a/mod_azure_tts/mod_azure_tts.c +++ b/mod_azure_tts/mod_azure_tts.c @@ -82,7 +82,6 @@ static switch_status_t a_speech_feed_tts(switch_speech_handle_t *sh, char *text, a->draining = 0; a->reads = 0; a->flushed = 0; - a->samples_rate = 0; return azure_speech_feed_tts(a, text, flags); } diff --git a/mod_azure_tts/mod_azure_tts.h b/mod_azure_tts/mod_azure_tts.h index 32cd8c8..921922a 100644 --- a/mod_azure_tts/mod_azure_tts.h +++ b/mod_azure_tts/mod_azure_tts.h @@ -25,7 +25,6 @@ typedef struct azure_data { int reads; int cache_audio; int flushed; - uint32_t samples_rate; void *startTime; diff --git a/mod_elevenlabs_tts/elevenlabs_glue.cpp b/mod_elevenlabs_tts/elevenlabs_glue.cpp index 7db7068..6cefc79 100644 --- a/mod_elevenlabs_tts/elevenlabs_glue.cpp +++ b/mod_elevenlabs_tts/elevenlabs_glue.cpp @@ -841,7 +841,6 @@ extern "C" { CURL* easy = createEasyHandle(); el->conn = (void *) conn ; - el->sample_rate = 0; conn->elevenlabs = el; conn->easy = easy; conn->global = &global; @@ -852,20 +851,12 @@ extern "C" { el->circularBuffer = (void *) new CircularBuffer_t(8192); - if (el->session_id) { + if (el->rate != 8000 /*Hz*/) { int err; - switch_codec_implementation_t read_impl; - switch_core_session_t *psession = switch_core_session_locate(el->session_id); - switch_core_session_get_read_impl(psession, &read_impl); - uint32_t samples_per_second = !strcasecmp(read_impl.iananame, "g722") ? read_impl.actual_samples_per_second : read_impl.samples_per_second; - el->sample_rate = samples_per_second; - // elevenlabs output is PCMU 8000 - if (samples_per_second != 8000 /*Hz*/) { - el->resampler = speex_resampler_init(1, 8000, samples_per_second, SWITCH_RESAMPLE_QUALITY, &err); - if (0 != err) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error initializing resampler: %s.\n", speex_resampler_strerror(err)); - return SWITCH_STATUS_FALSE; - } + el->resampler = speex_resampler_init(1, 8000, el->rate, SWITCH_RESAMPLE_QUALITY, &err); + if (0 != err) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error initializing resampler: %s.\n", speex_resampler_strerror(err)); + return SWITCH_STATUS_FALSE; } } @@ -939,9 +930,7 @@ extern "C" { switch_mutex_unlock(el->mutex); return SWITCH_STATUS_SUCCESS; } - size_t size = el->sample_rate ? - std::min((*datalen/(2 * el->sample_rate / 8000)), cBuffer->size()) : - std::min((*datalen/2), cBuffer->size()); + size_t size = std::min((*datalen/(2 * el->rate / 8000)), cBuffer->size()); pcm_data.insert(pcm_data.end(), cBuffer->begin(), cBuffer->begin() + size); cBuffer->erase(cBuffer->begin(), cBuffer->begin() + size); switch_mutex_unlock(el->mutex); diff --git a/mod_elevenlabs_tts/mod_elevenlabs_tts.h b/mod_elevenlabs_tts/mod_elevenlabs_tts.h index c8a9ac0..10dc63e 100644 --- a/mod_elevenlabs_tts/mod_elevenlabs_tts.h +++ b/mod_elevenlabs_tts/mod_elevenlabs_tts.h @@ -31,7 +31,6 @@ struct elevenlabs_data { char *cache_filename; int rate; - uint32_t sample_rate; void *conn; FILE *file; diff --git a/mod_playht_tts/playht_glue.cpp b/mod_playht_tts/playht_glue.cpp index a0e7add..e752e2f 100644 --- a/mod_playht_tts/playht_glue.cpp +++ b/mod_playht_tts/playht_glue.cpp @@ -838,17 +838,9 @@ extern "C" { p->circularBuffer = (void *) new CircularBuffer_t(8192); - if (p->session_id) { - int err; - switch_codec_implementation_t read_impl; - switch_core_session_t *psession = switch_core_session_locate(p->session_id); - switch_core_session_get_read_impl(psession, &read_impl); - switch_core_session_rwunlock(psession); - uint32_t samples_per_second = !strcasecmp(read_impl.iananame, "g722") ? read_impl.actual_samples_per_second : read_impl.samples_per_second; - if (mpg123_param(mh, MPG123_FORCE_RATE, samples_per_second /*Hz*/, 0) != MPG123_OK) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error mpg123_param!\n"); - return SWITCH_STATUS_FALSE; - } + if (mpg123_param(mh, MPG123_FORCE_RATE, p->rate /*Hz*/, 0) != MPG123_OK) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error mpg123_param!\n"); + return SWITCH_STATUS_FALSE; } std::ostringstream api_key_stream;