estoy interesado en producir una frecuencia de tono en tiempo de ejecución con la frecuencia y duración de ser parámetros variables. ¿Cuál sería la mejor manera de generar este archivo de sonido en MATLAB y tiene accesible en la secuencia de comandos para su uso posterior para ser concatenado con otros archivos de sonido generadas de una manera similar para diferentes frecuencias/duraciones? Gracias de antemano por los comentarios.¿Cómo se generan frecuencias de tono dual en MATLAB?
Respuesta
La duración para la que jugará un vector dado depende del número de elementos en el vector y la velocidad de muestreo. Por ejemplo, un vector de 1000 elementos, cuando se juega a 1 kHz, durará 1 segundo. Cuando se reproduce a 500 Hz, durará 2 segundos. Por lo tanto, la primera elección que debe hacer es la tasa de muestreo que desea usar. Para evitar aliasing, la frecuencia de muestreo debe ser twice as large as the largest frequency component of the signal. Sin embargo, es posible que desee hacerlo incluso más grande que eso para evitar la atenuación de frecuencias cercanas a la frecuencia de muestreo.
Dada una tasa de muestreo de 1 kHz, el siguiente ejemplo se crea un vector de sonido de una frecuencia de la duración y el tono dado (utilizando los LINSPACE y SIN funciones):
Fs = 1000; %# Samples per second
toneFreq = 50; %# Tone frequency, in Hertz
nSeconds = 2; %# Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));
Cuando se juega a 1 kHz utilizando el SOUND función, este vector generará un tono de 50 Hz durante 2 segundos:
sound(y, Fs); %# Play sound at sampling rate Fs
el vector entonces se puede guardar como un archivo WAV utilizando la función WAVWRITE:
wavwrite(y, Fs, 8, 'tone_50Hz.wav'); %# Save as an 8-bit, 1 kHz signal
El vector de sonido más tarde se puede cargar mediante la función WAVREAD. Si va a concatenar dos vectores de sonido, debe asegurarse de que estén diseñados para usar la misma frecuencia de muestreo. código
¿Especifico la frecuencia en la variable Fs? Sin embargo, me gustaría tener un método sistemático para descubrir cómo generar un tono particular en el mismo período de tiempo. ¿Cuáles serían sus recomendaciones sobre eso? – stanigator
@stanigator: Revisé el código para hacerlo más general. Calcula el vector de sonido dada la frecuencia de muestreo, la frecuencia del tono y la duración. – gnovice
de gnovice parece ser defectuoso. Creo que arruinó la función linspace. Puede verificarlo usted mismo al comparar la misma frecuencia con diferentes frecuencias de muestreo: el sonido difiere, lo cual obviamente no debería ser.
(soy estúpida. Cuando se utiliza la función de sonido de Matlab, asegúrese de utilizar la misma frecuencia de muestreo que se utilizó para generar el tono. De lo contrario, vas a tener un mal momento.)
Aquí es una función que envuelve la funcionalidad de generación de tonos.
function pureTone (frequency, duration, amplitude, sampleFreq, save2file)
% Generate pure tones.
% Enter at least 1 argument.
% Defaults are:
% duration 1 sec
% amplitude 1
% sampleFreq 48000 Hz
% save2file no
%--------------------
% If you want to save the tone to a file, provide a name.
switch nargin
case 0
error('Enter a frequency.')
case 1
duration = 1;
amplitude = 1;
sampleFreq = 48000;
save2file = 0;
case 2
amplitude = 1;
sampleFreq = 48000;
save2file = 0;
case 3
sampleFreq = 48000;
save2file = 0;
case 4
save2file = 0;
end
t = linspace(0, duration, duration * sampleFreq);
% http://de.wikipedia.org/wiki/Sinuston
s = amplitude * sin(2 * pi * frequency * t);
sound(s, sampleFreq);
if save2file
wavwrite(s, sampleFreq, 32, save2file);
end
end
Los resultados de su código y mi código parecen ser idénticos. Acabo de probar el mío con diferentes frecuencias de muestreo para varios tonos y no obtuve el error que está viendo. ¿Cuáles fueron los parámetros que estaba usando que resultaron en un error? – gnovice
Tienes razón. Por favor mira mi edición. – c06n
- 1. Reproducir tono estéreo en android
- 2. ¿Cómo se crea un tono sepia?
- 3. ¿Cómo se usa hist para trazar frecuencias relativas en R?
- 4. ¿Cómo se generan los números de inodo en linux tmpfs?
- 5. Controlar cómo se generan los datos de prueba en QuickCheck
- 6. ¿Cómo se generan pruebas de unidades dinámicas (parametrizadas) en python?
- 7. ¿Cómo se simularía programáticamente frecuencias de procesador más bajas?
- 8. ¿cómo se generan los GUID en SQL Server?
- 9. ¿Cómo sintetizar frecuencias exactas en flash?
- 10. Combinación única de frecuencias
- 11. GCM/APNS Cómo se generan los ID de registro
- 12. Mover elementos en Dual Listboxes
- 13. Uso de Matlab FFT para extraer frecuencias de la señal EEG
- 14. Maestro dual de MySQL
- 15. Jekyll: nuevas publicaciones no se generan
- 16. ¿Por qué se generan AND instrucciones?
- 17. Ajuste de tono en Android
- 18. ¿Cómo se generan números aleatorios criptográficamente seguros con PHP?
- 19. TCP: ¿Cómo se generan los números seq/ack?
- 20. ¿Cómo se generan solo los grupos capturados con sed?
- 21. Android pantalla dual
- 22. ¿Cómo se generan enteros utilizando el método Put_Line?
- 23. Dual Sim Android
- 24. ¿Cómo obtengo las frecuencias de cada valor en una FFT?
- 25. sentencias de paquete dual en Scala
- 26. Obtener frecuencias de términos en Lucene
- 27. Tarjeta SIM Dual Android
- 28. dual sim android sdk
- 29. ¿Cómo se muestra una matriz en MATLAB?
- 30. ¿Por qué se generan archivos de volcado de núcleo?
http://www.mathworks.com/help/techdoc/ref/sound.html –