Muestreo de voz con la psp (frecuencia)

Hola a todos. Estoy programando un reconocedor de voz para la universidad, y me he encontrado con un problema tonto, por defecto muestrea (el codigo original del que parto, el del Audio Mechanica) a 44100 herzios pero necesito que el muestreo sea a 8000. He estado mirando en el codigo y tiene toda la pinta de que la frec de muestreo se le indica en :

pspAudioInputInit(mic_level, 44100);

pero he probado, y si pongo otro numero, aunque sea ligeramente diferente (44200 por ej.) se cuelga la psp.

Alguien me puede echar una mano para cambiar la frecuencia de muestreo?

Muchas gracias por adelantado :)
Esto deveria de ir en desarrollo.
Si la psp puede hacer muestreos a 44.1kHz, y tu quieres que sea a 8kHz , dos opciones

Si la frecuencia de muestreo puede variar:

Un muestreo de 8820Hz lo sacas cogiendo 1 de cada 5 muestras que tomes a 44.1kHz.

Si no puedes cambiar la frecuencia de muestreo (que parece que es lo que pasa):

Metele la señal pero con las frecuencias multiplicadas adecuadamente (44.1/8 = 5.5125 sería el factor de multiplicación, que todo varie 5.5125 veces más deprisa y así muestrear a 44.1kHz sería equivalente a muestrear a 8kHz la señal a su ritmo de variación normal). Lo expandes en frecuencia y listo.

De todos modos esto se hace mejor con Matlab (lo siguiente va a ser decodificar el plus con la psp)
Lo mejor es que hagas lo que dice nuestro compañero elantonio: modifica el código de forma que procese sólo 1 de cada 5 muestras.
arxadian escribió:Lo mejor es que hagas lo que dice nuestro compañero elantonio: modifica el código de forma que procese sólo 1 de cada 5 muestras.

creo que seria la mejor manera :)
Si, es una opción... lo que ocurre es que necesito incluir un par ficheros .c que funcionan exclusivamente a 8000 Hz :(

He estado mirando y he visto que se puede hacer que la psp trabaje a 48 KHz en lugar de 44,1 KHz, en este caso estaría perfect porque 48/6 = 8 KHz.

http://forums.ps2dev.org/viewtopic.php?t=8462&start=0&postdays=0&postorder=asc&highlight=sceaudiosetfrequency

Lo que pasa es el foro esta en ingles y se habla de .prx (que no se que es :'(, de ejecutar las cosas en modo kernel, que tampoco tengo ni idea de como va.... asi que no me ha resuelto mucho.

Alguien ha tenido este problema y lo ha solucionado? Basicamente necesito una función que al principio del main le ponga frec(48000) y aquello funcione :p He visto que hay una (que es parte de la solucion que emplean en el foro) basandose en sceAudioSetFrequency(int freq), pero luego hay que incluir mas cosas... y no consigo hacerlo funcionar :'(
6 respuestas