Julius 4.1.5
|
00001 00024 /* 00025 * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University 00026 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00027 * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology 00028 * All rights reserved 00029 */ 00030 00031 #ifndef __SENT_ADIN__ 00032 #define __SENT_ADIN__ 00033 00034 #include <sent/stddefs.h> 00035 #include <sent/speech.h> 00036 00037 #if defined(HAVE_ALSA_ASOUNDLIB_H) || defined(HAVE_SYS_ASOUNDLIB_H) 00038 #define HAS_ALSA 00039 #endif 00040 #ifdef __linux__ 00041 #if defined(HAVE_SYS_SOUNDCARD_H) || defined(HAVE_MACHINE_SOUNDCARD_H) 00042 #define HAS_OSS 00043 #endif 00044 #endif /* __linux__ */ 00045 #ifdef HAVE_ESD_H 00046 #define HAS_ESD 00047 #endif 00048 00050 enum { 00051 INPUT_WAVEFORM, 00052 INPUT_VECTOR 00053 }; 00054 00056 enum { 00057 SP_RAWFILE, 00058 SP_MIC, 00059 SP_ADINNET, 00060 SP_MFCFILE, 00061 SP_NETAUDIO, 00062 SP_STDIN, 00063 SP_MFCMODULE 00064 }; 00065 00067 enum { 00068 SP_INPUT_DEFAULT, 00069 SP_INPUT_ALSA, 00070 SP_INPUT_OSS, 00071 SP_INPUT_ESD, 00072 }; 00073 00075 #define DEFAULT_WSTEP 1000 00076 00082 #ifdef HAVE_LIBSNDFILE 00083 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV,AU,SND,NIST,ADPCM and more" 00084 #else 00085 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV" 00086 #endif 00087 00093 #define ZMEANSAMPLES 48000 00094 00095 #define DS_RBSIZE 512 ///< Filter size 00096 #define DS_BUFSIZE 256 ///< Work area buffer size for x[] 00097 #define DS_BUFSIZE_Y 512 ///< Work area buffer size for y[] 00098 00102 typedef struct { 00103 int decrate; 00104 int intrate; 00105 double hdn[DS_RBSIZE+1]; 00106 int hdn_len; 00107 int delay; 00108 double x[DS_BUFSIZE]; 00109 double y[DS_BUFSIZE_Y]; 00110 double rb[DS_RBSIZE]; 00111 int indx; 00112 int bp; 00113 int count; 00114 } DS_FILTER; 00119 typedef struct { 00120 DS_FILTER *fir[3]; 00121 double *buf[4]; 00122 int buflen; 00123 } DS_BUFFER; 00124 00129 typedef struct { 00130 int trigger; 00131 int length; 00132 int offset; 00133 int zero_cross; 00134 int is_trig; 00135 int sign; 00136 int top; 00137 int valid_len; 00138 SP16 *data; 00139 int *is_zc; 00140 int level; 00141 } ZEROCROSS; 00142 00143 #define ZC_UNDEF 2 ///< Undefined mark for zerocross 00144 #define ZC_POSITIVE 1 ///< Positive mark used for zerocross 00145 #define ZC_NEGATIVE -1 ///< Negative mark used for zerocross 00146 00147 00148 #ifdef __cplusplus 00149 extern "C" { 00150 #endif 00151 00152 /* adin/adin_mic_*.c */ 00153 boolean adin_mic_standby(int freq, void *arg); 00154 boolean adin_mic_begin(char *pathname); 00155 boolean adin_mic_end(); 00156 int adin_mic_read(SP16 *buf, int sampnum); 00157 char *adin_mic_input_name(); 00158 /* adin/adin_mic_linux_alsa.c */ 00159 boolean adin_alsa_standby(int freq, void *arg); 00160 boolean adin_alsa_begin(char *pathname); 00161 boolean adin_alsa_end(); 00162 int adin_alsa_read(SP16 *buf, int sampnum); 00163 char *adin_alsa_input_name(); 00164 /* adin/adin_mic_linux_oss.c */ 00165 boolean adin_oss_standby(int freq, void *arg); 00166 boolean adin_oss_begin(char *pathname); 00167 boolean adin_oss_end(); 00168 int adin_oss_read(SP16 *buf, int sampnum); 00169 char *adin_oss_input_name(); 00170 /* adin/adin_esd.c */ 00171 boolean adin_esd_standby(int freq, void *arg); 00172 boolean adin_esd_begin(char *pathname); 00173 boolean adin_esd_end(); 00174 int adin_esd_read(SP16 *buf, int sampnum); 00175 char *adin_esd_input_name(); 00176 /* adin/adin_netaudio.c and adin/adin_na.c */ 00177 boolean adin_netaudio_standby(int freq, void *arg); 00178 boolean adin_netaudio_begin(char *pathname); 00179 boolean adin_netaudio_end(); 00180 int adin_netaudio_read(SP16 *buf, int sampnum); 00181 char *adin_netaudio_input_name(); 00182 int NA_standby(int, char *); 00183 void NA_start(); 00184 void NA_stop(); 00185 int NA_read(SP16 *buf, int sampnum); 00186 00187 /* adin/adin_file.c */ 00188 boolean adin_file_standby(int freq, void *arg); 00189 boolean adin_file_begin(char *pathname); 00190 int adin_file_read(SP16 *buf, int sampnum); 00191 boolean adin_file_end(); 00192 boolean adin_stdin_standby(int freq, void *arg); 00193 boolean adin_stdin_begin(char *pathname); 00194 int adin_stdin_read(SP16 *buf, int sampnum); 00195 char *adin_file_get_current_filename(); 00196 char *adin_stdin_input_name(); 00197 00198 /* adin/adin_sndfile.c */ 00199 #ifdef HAVE_LIBSNDFILE 00200 boolean adin_sndfile_standby(int freq, void *arg); 00201 boolean adin_sndfile_begin(char *pathname); 00202 int adin_sndfile_read(SP16 *buf, int sampnum); 00203 boolean adin_sndfile_end(); 00204 char *adin_sndfile_get_current_filename(); 00205 #endif 00206 00207 /* adin/adin_tcpip.c */ 00208 boolean adin_tcpip_standby(int freq, void *arg); 00209 boolean adin_tcpip_begin(char *pathname); 00210 boolean adin_tcpip_end(); 00211 int adin_tcpip_read(SP16 *buf, int sampnum); 00212 boolean adin_tcpip_send_pause(); 00213 boolean adin_tcpip_send_terminate(); 00214 boolean adin_tcpip_send_resume(); 00215 char *adin_tcpip_input_name(); 00216 00217 /* adin/zc-e.c */ 00218 void init_count_zc_e(ZEROCROSS *zc, int length); 00219 void reset_count_zc_e(ZEROCROSS *zc, int c_trigger, int c_length, int c_offset); 00220 void free_count_zc_e(ZEROCROSS *zc); 00221 int count_zc_e(ZEROCROSS *zc, SP16 *buf,int step); 00222 void zc_copy_buffer(ZEROCROSS *zc, SP16 *newbuf, int *len); 00223 00224 /* adin/zmean.c */ 00225 void zmean_reset(); 00226 void sub_zmean(SP16 *speech, int samplenum); 00227 00228 /* adin/ds48to16.c */ 00229 DS_BUFFER *ds48to16_new(); 00230 void ds48to16_free(DS_BUFFER *ds); 00231 int ds48to16(SP16 *dst, SP16 *src, int srclen, int maxdstlen, DS_BUFFER *ds); 00232 00233 #ifdef __cplusplus 00234 } 00235 #endif 00236 00237 00238 #endif /* __SENT_ADIN__ */