time recording problem with matlab

hello,
I am trying to record my voice using the codes below:
% Before starting, we will use the following commands
clear all % clear all workspace variables
close all % close all open figures
clc % clear command window
% Speech synthesis (recording and saving audio signal) and loading into
% matlab
% Input paramters (default values)
fs= 16000; % sample frequency
nobits = 8; % number of bits per sample
nochannels = 1; % number of channels (mono)
x = audiorecorder(fs, nobits, nochannels);
get(x);
x = audiorecorder;
disp('Start speaking.')
recordblocking(x, 3);
disp('End of Recording.');
% Play audio signal
play(x);
% Save data (double precision array)
x = getaudiodata(x);
% Save recorded signal as an audio file with "wav" extention (type of file)
audiowrite ('x.wav', x,fs)
% Codes to asnwer questions (1-4) of (5.Problem Statement)
% 1. Code to find sample rate of the audio signal
% Read (download) audio file into matlab
[x,fs] = audioread('x.wav');
for some reasons, the recorded audio file is less than 3 seconds and when I play it using real player it only last for 1.5 seconds,
The strange thing is that the codes and recorded signal are working properly with Fs= 8000 Hz. Could anyone help me with this issue?
Thank a lot and I really appreciate quick response as I have to submit my project tomorrow.

1 件のコメント

Jan
Jan 2016 年 5 月 7 日
Your question is funny. You try to push the voluntary helpers, because you started to solve the problems very late. ;-) Of course, I have been almost too late many times also, but I did not publish this in the forum.

サインインしてコメントする。

 採用された回答

Jan
Jan 2016 年 5 月 7 日
編集済み: Jan 2016 年 5 月 7 日

0 投票

What is the meaning of these lines:
x = audiorecorder(fs, nobits, nochannels);
get(x);
x = audiorecorder;
You create an audiorecorder object, get its properties but do neither display or use them. Then get(x) is only a waste of time? And inthe next line you overwrite the obejct by a new audiorecorder object, which uses the default values?
The default frequency of the audiorecorder obejct is 8000Hz. Do you recognize this value? It could be a solution, simply to remove the strange lines:
get(x);
x = audiorecorder;
;-) Note: Strange commands have strange effects. If the program produces stranger results than it should, avoid strange commands.

1 件のコメント

Dana Alsalman
Dana Alsalman 2016 年 5 月 7 日
編集済み: Dana Alsalman 2016 年 5 月 7 日
Jan Simon. Thanks a lot sir, I was able to solve the problem. I really appreciate it if you can also help me write the matlab codes to find the bandwidth and the Nyquist rate of my signal

サインインしてコメントする。

その他の回答 (0 件)

質問済み:

2016 年 5 月 7 日

編集済み:

2016 年 5 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by