本文整理汇总了C++中ps_end_utt函数的典型用法代码示例。如果您正苦于以下问题:C++ ps_end_utt函数的具体用法?C++ ps_end_utt怎么用?C++ ps_end_utt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ps_end_utt函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: recognize_from_mic
/*
* Continuous recognition from mic
*/
int
recognize_from_mic()
{
ad_rec_t *ad;
int16 adbuf[2048];
const char *fname;
const char* seg;
int32 k;
char str[1000]="";
uint8 utt_started, in_speech;
if ((ad = ad_open_dev(cmd_ln_str_r(config, "-adcdev"),16000)) == NULL)
perror("Failed to open audio device\n");
if (ad_start_rec(ad) < 0)
perror("Failed to start recording\n");
ps_start_utt(ps);
utt_started = FALSE;
ps_seg_t *psegt;
while (!finished) {
if ((k = ad_read(ad, adbuf, 2048)) < 0)
perror("Failed to read audio\n");
ps_process_raw(ps, adbuf, k, FALSE, FALSE);
in_speech = ps_get_in_speech(ps);
if (in_speech && !utt_started) {
utt_started = TRUE;
}
if (!in_speech && utt_started) {
ps_end_utt(ps);
psegt = ps_seg_iter(ps, NULL);
while (psegt!=NULL){
seg = ps_seg_word(psegt);
strncpy_s( str, seg, strlen(seg));
listenCallback(str);
printf("%s\n", seg);
int prob = ps_seg_prob(psegt,NULL,NULL,NULL);
printf("%d\n", prob);
psegt = ps_seg_next(psegt);
}
ps_start_utt(ps);
utt_started = FALSE;
}
Sleep(100);
}
ps_end_utt(ps);
fclose(rawfd);
return 0;
}
示例2: processRaw
int processRaw(const char *rawFile) {
const char *hyp, *uttid;
int16 buf[512];
int rv;
int32 score;
// Open the wav file passed from argument
printf("file: %s\n", rawFile);
fh = fopen(rawFile, "rb");
if (fh == NULL) {
fprintf(stderr, "Unable to open input file %s\n", rawFile);
return -1;
}
// Start utterance
rv = ps_start_utt(ps);
// Process buffer, 512 samples at a time
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
// Recieve the recognized string
rv = ps_end_utt(ps);
hyp = ps_get_hyp(ps, &score);
printf("Recognized: |%s|\n", hyp);
fflush(stdout);
// Close file
fclose(fh);
return 0;
}
示例3: ps_start_utt
std::string PocketSphinxServer::decode(const PocketSphinxIce::sample& signal, const Ice::Current& c)
{
std::cout << "Decode\n";
int rv;
const char* hyp;
const char* uttid;
int32 score;
rv = ps_start_utt(ps);
if (rv < 0)
throw PocketSphinxIce::Error("Error in ps_start_utt");
ps_process_raw(ps, signal.data(), signal.size(), FALSE, FALSE);
rv = ps_end_utt(ps);
if (rv < 0)
throw PocketSphinxIce::Error("Error in ps_end_utt");
hyp = ps_get_hyp(ps, &score);
if (!hyp)
throw PocketSphinxIce::Error("ps_get_hyp returned NULL");
std::cout << "return:" << hyp << '\n';
return hyp;
}
示例4: ps_end_utt
int ofApp::engineClose()
{
char const *uttid;
int rv;
int32 score;
rv = ps_end_utt(ps);
if (rv < 0)
{
return 1;
}
hyp = ps_get_hyp(ps, &score);
if (hyp == NULL)
{
return 1;
}
printf("NEWLINE_________\n\n\nRecognized: %s\n", hyp);
sentence = hyp;
process_result();
}
示例5: pocketsphinx_asr_close
/*! function to close the asr interface */
static switch_status_t pocketsphinx_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags)
{
pocketsphinx_t *ps = (pocketsphinx_t *) ah->private_info;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, ">>>>>>>>pocketsphinx_asr_close<<<<<<<<<\n");
switch_mutex_lock(ps->flag_mutex);
if (switch_test_flag(ps, PSFLAG_ALLOCATED)) {
if (switch_test_flag(ps, PSFLAG_READY)) {
ps_end_utt(ps->ps);
}
ps_free(ps->ps);
ps->ps = NULL;
}
switch_safe_free(ps->grammar);
switch_mutex_unlock(ps->flag_mutex);
switch_clear_flag(ps, PSFLAG_HAS_TEXT);
switch_clear_flag(ps, PSFLAG_READY);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Port Closed.\n");
switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);
/* ifly end session */
QISRSessionEnd(ps->ifly_session_id, ps->ifly_hints);
return SWITCH_STATUS_SUCCESS;
}
示例6: recognize_from_file
/*
* Continuous recognition from a file
*/
int
recognize_from_file()
{
int16 adbuf[2048];
const char *fname;
const char *hyp;
int32 k;
char str[1000]="";
uint8 utt_started, in_speech;
fname = "C:/Users/Reza/Documents/GitHub/speech_agent/presentation_samples/italy1_reza.wav";
rawfd = fopen(fname, "rb");
if (strlen(fname) > 4 && strcmp(fname + strlen(fname) - 4, ".wav") == 0) {
char waveheader[44];
fread(waveheader, 1, 44, rawfd);
}
ps_start_utt(ps);
utt_started = FALSE;
while ((k = fread(adbuf, sizeof(int16), 2048, rawfd)) > 0) {
ps_process_raw(ps, adbuf, k, FALSE, FALSE);
in_speech = ps_get_in_speech(ps);
if (in_speech && !utt_started) {
utt_started = TRUE;
}
if (!in_speech && utt_started) {
ps_end_utt(ps);
hyp = ps_get_hyp(ps, NULL);
if (hyp != NULL){
strncpy_s( str, hyp, strlen(hyp));
printf("%s\n", hyp);
listenCallback(str);
}
ps_start_utt(ps);
utt_started = FALSE;
}
}
ps_end_utt(ps);
fclose(rawfd);
return 0;
}
示例7: main
int
main(int argc, char *argv[])
{
ps_decoder_t *ps;
cmd_ln_t *config;
FILE *fh;
char const *hyp, *uttid;
int16 buf[512];
int rv;
int32 score;
//int i;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", MODELDIR "/hmm/en_US/hub4wsj_sc_8k",
"-lm", MODELDIR "/lm/en/turtle.DMP",
"-dict", MODELDIR "/lm/en/turtle.dic",
NULL);
if (config == NULL)
return 1;
ps = ps_init(config);
if (ps == NULL)
return 1;
fh = fopen("goforward.raw", "rb");
if (fh == NULL) {
perror("Failed to open goforward.raw");
return 1;
}
rv = ps_decode_raw(ps, fh, "goforward", -1);
if (rv < 0)
return 1;
hyp = ps_get_hyp(ps, &score, &uttid);
if (hyp == NULL)
return 1;
printf("Recognized: %s\n", hyp);
fseek(fh, 0, SEEK_SET);
rv = ps_start_utt(ps, "goforward");
if (rv < 0)
return 1;
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
rv = ps_end_utt(ps);
if (rv < 0)
return 1;
hyp = ps_get_hyp(ps, &score, &uttid);
if (hyp == NULL)
return 1;
printf("Recognized: %s\n", hyp);
fclose(fh);
ps_free(ps);
return 0;
}
示例8: main
int main(int argc, char *argv[]) {
ps_decoder_t *ps;
cmd_ln_t *config;
FILE *fh;
char const *hyp, *uttid;
int16 buf[512];
int rv;
int32 score;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", MODELDIR "/en-us/en-us",
"-lm", MODELDIR "/en-us/en-us.lm.bin",
"-dict", MODELDIR "/en-us/cmudict-en-us.dict",
NULL);
if (config == NULL) {
fprintf(stderr, "Failed to create config object, see log for details\n");
return -1;
}
// Initialize pocketsphinx
ps = ps_init(config);
if (ps == NULL) {
fprintf(stderr, "Failed to create recognizer, see log for details\n");
return -1;
}
// Open the wav file passed from argument
printf("file: %s\n", argv[1]);
fh = fopen(argv[1], "rb");
if (fh == NULL) {
fprintf(stderr, "Unable to open input file %s\n", argv[1]);
return -1;
}
// Start utterance
rv = ps_start_utt(ps);
// Process buffer, 512 samples at a time
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
// Recieve the recognized string
rv = ps_end_utt(ps);
hyp = ps_get_hyp(ps, &score);
printf("Recognized: |%s|\n", hyp);
// free memory
fclose(fh);
ps_free(ps);
cmd_ln_free_r(config);
return 0;
}
示例9: spDecode
/**
* You must sucessfully call spInitListener
* once before using this function.
*
* Reads the next block of audio from the microphone
* up to SPLBUFSIZE number of samples
* (defined in splistener.h).
* If an utterance was completed in that block,
* the transcription is stored in the string words.
*
* When calling this function in a realtime loop, delay
* by some amount of time between calls keeping in mind
* your recording's sample rate and maximum samples read
* per call (ex. sleep the thread for 100 milliseconds)
* so that some audio can be recorded for the next call.
*
* @return true if a speech session was completed and
* transcribed this block, otherwise false.
*/
static bool spDecode() {
static bool uttered = false;
// lock pocketsphinx resources to make sure they
// don't get freed by main thread while in use
std::lock_guard<std::mutex> ps_lock(ps_mtx);
if(!mic || !ps)
return false;
int samples_read = ad_read(mic, buf, SPLBUFSIZE);
if (samples_read <= 0) {
spError("failed to read audio :(");
return false;
}
ps_process_raw(ps, buf, samples_read, FALSE, FALSE);
bool talking = ps_get_in_speech(ps);
// Just started talking
if (talking && !uttered) {
uttered = true;
return false;
}
// Stopped talking, so transcribe what was said
// and begin the next utterance
if (!talking && uttered) {
ps_end_utt(ps);
const char *trans = ps_get_hyp(ps, NULL);
if (ps_start_utt(ps) < 0) {
spError("failed to start utterance :(");
}
uttered = false;
int l = strlen(trans);
if (trans && l > 0) {
std::lock_guard<std::mutex> lock(words_mtx);
if (words && l + 1 > words_buf_size) {
delete words;
words = NULL;
}
if (!words) {
words = new char[l + 1];
words_buf_size = l + 1;
}
std::copy(trans, trans + l, words);
words[l] = '\0';
return true;
}
}
return false;
}
示例10: pthread_mutex_lock
bool GqAndroidSphinx::end_recognize_from_mic() {
m_precord->stop_record();
pthread_mutex_lock(&m_pt_mutex);
int rv = ps_end_utt(m_pdecoder);
pthread_mutex_unlock(&m_pt_mutex);
m_fout.close();
if (rv < 0)
return false;
return true;
}
示例11: stop
ReturnType Recognizer::stop() {
if ((decoder == NULL) || (!is_recording)) return BAD_STATE;
if (ps_end_utt(decoder) < 0) {
return RUNTIME_ERROR;
}
const char* h = ps_get_hyp(decoder, &score, &sentence_id);
current_hyp = (h == NULL) ? "" : h;
is_recording = false;
return SUCCESS;
}
示例12: decode
int decode()
{
int ret;
int16 buf[BUFFER_SIZE];
printf("Listening for input...\n");
if (ad_start_rec(ad) < 0) {
printf("Error starting recording.\n");
return 0;
}
//check if not silent
while ((ret = cont_ad_read(c_ad, buf, BUFFER_SIZE)) == 0)
usleep(1000);
if (ps_start_utt(ps, NULL) < 0) {
printf("Failed to start utterance.\n");
return 0;
}
ret = ps_process_raw(ps, buf, BUFFER_SIZE, 0, 0);
if (ret < 0) {
printf("Error decoding.\n");
return 0;
}
do
{
ret = cont_ad_read(c_ad, buf, BUFFER_SIZE);
if (ret < 0) {
printf("Failed to record audio.\n");
return 0;
} else if(ret > 0) {
// Valid speech data read.
ret = ps_process_raw(ps, buf, 4096, 0, 0);
if (ret < 0) {
printf("Error decoding.\n");
return 0;
}
} else {
//no data
usleep(1000);
}
} while(getRun());
ad_stop_rec(ad);
while (ad_read(ad, buf, BUFFER_SIZE) >= 0);
cont_ad_reset(c_ad);
ps_end_utt(ps);
return 1;
}
示例13: ps_decode_senscr
int
ps_decode_senscr(ps_decoder_t *ps, FILE *senfh)
{
int nfr, n_searchfr;
ps_start_utt(ps);
n_searchfr = 0;
acmod_set_insenfh(ps->acmod, senfh);
while ((nfr = acmod_read_scores(ps->acmod)) > 0) {
if ((nfr = ps_search_forward(ps)) < 0) {
ps_end_utt(ps);
return nfr;
}
n_searchfr += nfr;
}
ps_end_utt(ps);
acmod_set_insenfh(ps->acmod, NULL);
return n_searchfr;
}
示例14: main
int
main(int argc, char *argv[])
{
ps_decoder_t *ps;
cmd_ln_t *config;
FILE *fh;
char const *hyp, *uttid;
int16 buf[512];
int rv;
int32 score;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", MODELDIR "/en-us/en-us",
"-keyphrase", "marieta",
"-dict", MODELDIR "/en-us/cmudict-en-us.dict",
"-kws_threshold", "1e-30",
NULL);
if (config == NULL) {
fprintf(stderr, "Failed to create config object, see log for details\n");
return -1;
}
ps = ps_init(config);
if (ps == NULL) {
fprintf(stderr, "Failed to create recognizer, see log for details\n");
return -1;
}
fh = fopen("data/marieta.raw", "rb");
if (fh == NULL) {
fprintf(stderr, "Unable to open input file goforward.raw\n");
return -1;
}
rv = ps_start_utt(ps);
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
rv = ps_end_utt(ps);
hyp = ps_get_hyp(ps, &score);
printf("Recognized: %s\n", hyp);
fclose(fh);
ps_free(ps);
cmd_ln_free_r(config);
return 0;
}
示例15: destBuffer
void Recognizer::run()
{
// Create audio converter:
auto converter = ci::audio::dsp::Converter::create( mMonitorNode->getSampleRate(), 16000, mMonitorNode->getNumChannels(), 1, mMonitorNode->getFramesPerBlock() );
// Create buffer for converted audio:
ci::audio::Buffer destBuffer( converter->getDestMaxFramesPerBlock(), converter->getDestNumChannels() );
bool utt_started, in_speech;
if( ps_start_utt( mDecoder ) < 0 )
throw std::runtime_error( "Could not start utterance" );
utt_started = false;
while( ! mStop ) {
// Convert buffer:
std::pair<size_t,size_t> convertResult = converter->convert( &( mMonitorNode->getBuffer() ), &destBuffer );
// Convert buffer data:
int16_t* data = new int16_t[ convertResult.second ];
convertFloatToInt16( destBuffer.getData(), data, convertResult.second );
// Process buffer:
ps_process_raw( mDecoder, data, convertResult.second, false, false );
// Cleanup buffer data:
delete[] data;
in_speech = static_cast<bool>( ps_get_in_speech( mDecoder ) );
if( in_speech && ! utt_started ) {
utt_started = true;
}
if( ! in_speech && utt_started ) {
// Start new utterance on speech to silence transition:
ps_end_utt( mDecoder );
// Pass to handler:
if( mHandler )
mHandler->event( mDecoder );
// Prepare for next utterance:
if( ps_start_utt( mDecoder ) < 0 )
throw std::runtime_error( "Could not start utterance" );
utt_started = false;
}
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
}
}