How to control when recording starts when using "input device = voicerecord"


Author
Message
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Dave - Monday, May 28, 2018
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Dave,

Thank you for the clarification. I will toy around with the beginresponsetime and response duration settings some more to see if I can get a desired flow.

On a related topic, I've somehow managed to corrupt my script (I guess) and now for some reason on the first run through, the audio file is not getting played. It simply jumps forward to the 2nd trial... From the second trial the audio file plays and waits for a voicerecord response (still not using beginresponsetime and duration). It was working fine before...I'm not sure what I could have changed to cause this behavior. I restarted Inquisit just to make sure the problem was not related to the fact that I had left the software running for quite a long time but that didn't make a difference.

My current trial settings are:

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ responseinterrupt = frames
/ validresponse = (anyresponse)

Regards

Jason


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Dave,

Thank you for the clarification. I will toy around with the beginresponsetime and response duration settings some more to see if I can get a desired flow.

On a related topic, I've somehow managed to corrupt my script (I guess) and now for some reason on the first run through, the audio file is not getting played. It simply jumps forward to the 2nd trial... From the second trial the audio file plays and waits for a voicerecord response (still not using beginresponsetime and duration). It was working fine before...I'm not sure what I could have changed to cause this behavior. I restarted Inquisit just to make sure the problem was not related to the fact that I had left the software running for quite a long time but that didn't make a difference.

My current trial settings are:

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ responseinterrupt = frames
/ validresponse = (anyresponse)

Regards

Jason


I really can't answer that without the script (including all files it actually needs to run). You can put all of that in a ZIP and attach it here (click +Insert -> Add File), and I'll take a look (not sure if today, could be tomorrow).

Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Dave - Monday, May 28, 2018
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Dave,

Thank you for the clarification. I will toy around with the beginresponsetime and response duration settings some more to see if I can get a desired flow.

On a related topic, I've somehow managed to corrupt my script (I guess) and now for some reason on the first run through, the audio file is not getting played. It simply jumps forward to the 2nd trial... From the second trial the audio file plays and waits for a voicerecord response (still not using beginresponsetime and duration). It was working fine before...I'm not sure what I could have changed to cause this behavior. I restarted Inquisit just to make sure the problem was not related to the fact that I had left the software running for quite a long time but that didn't make a difference.

My current trial settings are:

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ responseinterrupt = frames
/ validresponse = (anyresponse)

Regards

Jason


I really can't answer that without the script (including all files it actually needs to run). You can put all of that in a ZIP and attach it here (click +Insert -> Add File), and I'll take a look (not sure if today, could be tomorrow).

Dave,

Thanks...I don't think it has anythign to do with the files (audio or images) as they have not changed at all. I'm guessing I've corrupted something in terms of script syntax... Here is the entire script that I am testing with. I've made the beginresponsetime and trialduration changes and am getting close to a desired behavior...but that first audio file is not getting played, which is a new issue for me. :-(

<parameters>
/fontheight = 10%

/responsekeyleft = 30
/responsekeyleft_label = "A"
/responsekeyright = 40
/responsekeyright_label = "'"
</parameters>

<defaults>
/ screencolor = white
/ voicekeythreshold = 15
/ minimumversion = "5.0.0.0"
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
</defaults>

<item instructions>

/1 = "This is a timed selection task. GO AS FAST AS YOU CAN but try not to make mistakes.

A series of asterisks, like the following, ******** will be displayed on the screen followed by a quick flash.

You will then see two words.

After the two words appear, you will hear a word.

Repeat the word you hear outloud immediately after you hear the word."

</item>

***************************VALUES**********************
<values>
/selectContinue = 1
</values>
***************************VALUES*********************

<item continue>
/1 = "Press the SPACE BAR to begin"
</item>

<picture mypicture>
/ items = pictureitems
</picture>

<item pictureitems>
/ 1 = "dog.jpg"
/ 2 = "cat.jpg"
/ 3 = "apple.jpg"
/ 4 = "house.jpg"
/ 5 = "ball.jpg"
/ 6 = "banana.jpg"
/ 7 = "boat.jpg"
/ 8 = "snail.jpg"
/ 9 = "tree.jpg"
/10 = "boat.jpg"
</item>

<sound mysound>
/ items = sounditems
/ select = picture.mypicture.currentindex
</sound>

<item sounditems>
/ 1 = "dog.wav"
/ 2 = "cat.wav"
/ 3 = "apple.wav"
/ 4 = "house.wav"
/ 5 = "ball.wav"
/ 6 = "banana.wav"
/ 7 = "boat.wav"
/ 8 = "snail.wav"
/ 9 = "tree.wav"
/ 10 = "car.wav"

</item>

<text correctoption>
/ items = correctitems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item correctitems>
/ 1 = "Dog"
/ 2 = "Cat"
/ 3 = "Apple"
/ 4 = "House"
/ 5 = "Ball"
/ 6 = "Banana"
/ 7 = "Boat"
/ 8 = "Snail"
/ 9 = "Tree"
/ 10 = "Car"
</item>

<text distractoroption>
/ items = distractoritems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item distractoritems>
/ 1 = "Cat"
/ 2 = "Dog"
/ 3 = "House"
/ 4 = "Apple"
/ 5 = "Banana"
/ 6 = "Ball"
/ 7 = "Snail"
/ 8 = "Boat"
/ 9 = "Car"
/ 10 = "Tree"
</item>

<item mask>
/1="*******
*******"
</item>

<text mask>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = black
/txbgcolor = white
/position = (50%, 50%)
</text>

<text maskeraser>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = white
/txbgcolor = white
/position = (50%, 50%)
</text>

// randomize the left-right position of the two response options
<list hpos>
/ items = (30%, 70%)
/ selectionrate = always
</list>

<text instructions>
/ items = item.instructions
/ hjustify = center
/ size = (90%, 60%)
/ position = (50%, 85%)
/ valign = bottom
/ txcolor = black
/ select = sequence
/ resetinterval = 20
</text>

<text spacebar>
/ items = continue
/ select = values.selectContinue
/ position = (50%, 95%)
/ valign = bottom
</text>

<trial instructions>
/ stimulustimes = [1=instructions, spacebar]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
</trial>

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 2201
/ responseinterrupt = frames
/ trialduration = 6000
</trial>

<block myblock>
/ trials = [1 = instructions; 2-11 = mytrial]
</block>




Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Dave,

Thank you for the clarification. I will toy around with the beginresponsetime and response duration settings some more to see if I can get a desired flow.

On a related topic, I've somehow managed to corrupt my script (I guess) and now for some reason on the first run through, the audio file is not getting played. It simply jumps forward to the 2nd trial... From the second trial the audio file plays and waits for a voicerecord response (still not using beginresponsetime and duration). It was working fine before...I'm not sure what I could have changed to cause this behavior. I restarted Inquisit just to make sure the problem was not related to the fact that I had left the software running for quite a long time but that didn't make a difference.

My current trial settings are:

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ responseinterrupt = frames
/ validresponse = (anyresponse)

Regards

Jason


I really can't answer that without the script (including all files it actually needs to run). You can put all of that in a ZIP and attach it here (click +Insert -> Add File), and I'll take a look (not sure if today, could be tomorrow).

Dave,

Thanks...I don't think it has anythign to do with the files (audio or images) as they have not changed at all. I'm guessing I've corrupted something in terms of script syntax... Here is the entire script that I am testing with. I've made the beginresponsetime and trialduration changes and am getting close to a desired behavior...but that first audio file is not getting played, which is a new issue for me. :-(

<parameters>
/fontheight = 10%

/responsekeyleft = 30
/responsekeyleft_label = "A"
/responsekeyright = 40
/responsekeyright_label = "'"
</parameters>

<defaults>
/ screencolor = white
/ voicekeythreshold = 15
/ minimumversion = "5.0.0.0"
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
</defaults>

<item instructions>

/1 = "This is a timed selection task. GO AS FAST AS YOU CAN but try not to make mistakes.

A series of asterisks, like the following, ******** will be displayed on the screen followed by a quick flash.

You will then see two words.

After the two words appear, you will hear a word.

Repeat the word you hear outloud immediately after you hear the word."

</item>

***************************VALUES**********************
<values>
/selectContinue = 1
</values>
***************************VALUES*********************

<item continue>
/1 = "Press the SPACE BAR to begin"
</item>

<picture mypicture>
/ items = pictureitems
</picture>

<item pictureitems>
/ 1 = "dog.jpg"
/ 2 = "cat.jpg"
/ 3 = "apple.jpg"
/ 4 = "house.jpg"
/ 5 = "ball.jpg"
/ 6 = "banana.jpg"
/ 7 = "boat.jpg"
/ 8 = "snail.jpg"
/ 9 = "tree.jpg"
/10 = "boat.jpg"
</item>

<sound mysound>
/ items = sounditems
/ select = picture.mypicture.currentindex
</sound>

<item sounditems>
/ 1 = "dog.wav"
/ 2 = "cat.wav"
/ 3 = "apple.wav"
/ 4 = "house.wav"
/ 5 = "ball.wav"
/ 6 = "banana.wav"
/ 7 = "boat.wav"
/ 8 = "snail.wav"
/ 9 = "tree.wav"
/ 10 = "car.wav"

</item>

<text correctoption>
/ items = correctitems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item correctitems>
/ 1 = "Dog"
/ 2 = "Cat"
/ 3 = "Apple"
/ 4 = "House"
/ 5 = "Ball"
/ 6 = "Banana"
/ 7 = "Boat"
/ 8 = "Snail"
/ 9 = "Tree"
/ 10 = "Car"
</item>

<text distractoroption>
/ items = distractoritems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item distractoritems>
/ 1 = "Cat"
/ 2 = "Dog"
/ 3 = "House"
/ 4 = "Apple"
/ 5 = "Banana"
/ 6 = "Ball"
/ 7 = "Snail"
/ 8 = "Boat"
/ 9 = "Car"
/ 10 = "Tree"
</item>

<item mask>
/1="*******
*******"
</item>

<text mask>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = black
/txbgcolor = white
/position = (50%, 50%)
</text>

<text maskeraser>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = white
/txbgcolor = white
/position = (50%, 50%)
</text>

// randomize the left-right position of the two response options
<list hpos>
/ items = (30%, 70%)
/ selectionrate = always
</list>

<text instructions>
/ items = item.instructions
/ hjustify = center
/ size = (90%, 60%)
/ position = (50%, 85%)
/ valign = bottom
/ txcolor = black
/ select = sequence
/ resetinterval = 20
</text>

<text spacebar>
/ items = continue
/ select = values.selectContinue
/ position = (50%, 95%)
/ valign = bottom
</text>

<trial instructions>
/ stimulustimes = [1=instructions, spacebar]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
</trial>

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 2201
/ responseinterrupt = frames
/ trialduration = 6000
</trial>

<block myblock>
/ trials = [1 = instructions; 2-11 = mytrial]
</block>




There is nothing obviously wrong with the syntax. When the issue is that some file or files aren't getting played, I need those files. Please put the entire script, including all wav files and images, in a ZIP and attach it here. Thanks.

Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Dave - Monday, May 28, 2018
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Monday, May 28, 2018
Dave - Monday, May 28, 2018
Musashi Jason - Sunday, May 27, 2018
Dave - Thursday, May 17, 2018
Musashi Jason - Tuesday, May 15, 2018
Musashi Jason - Tuesday, May 15, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Monday, May 14, 2018
Dave - Monday, May 14, 2018
Musashi Jason - Sunday, May 13, 2018
Hello,

I'm slowly plugging away with my familiarization with Inquist 5 but the process includes quite a few false starts. :-/

I am using voicerecord and want to record responses ater presenting two stimuli (first an image (led and followed by masks), and then an audio stimuli)....after which I want voicerecord to record the subject's response utterance. Currently it seems that voicecrecord begins immediately after the first mask (or image) as I can hear the audio stimulus being recorded...from headphones (I guess it's quiet enough to not be sensed as I have the voicekeythreshold at 15....or should that be voicerecordthreshold...?

Here is the stimulus line...maybe my error will be obvious here...?

/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)

Regards

Jason

Use the <trial>'s /beginresponsetime attribute to specify when it should start accepting responses (here: recording audio). You may also want to set the /responseinterrupt mode to frames such as not to terminate the stimulus presentaation sequence once a response is first registered.

Dave,

Thanks, this gets me on the right track it seems but I think I'm missing someting with the responseinterrupt setting. Is there a way to specify a record time interval in order to make sure the subject's entire response is recorded? For example, I have an audio prompt using the word "snail". When the subject repeats the word "snail" the response is being detected at the beginning of the aspirated fricative 's' and then moves on to the next item without recording the entire response...'snail'. I'm guessing I need to add a timing setting...delay of some sort to my trial?

Regards

Jason

Try setting up your trial along the following lines

<trial example>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 1700 <-- not sure when you want to start recording, change as needed. 1700 would coincide with the display of correctoption/distractoroption
/ responseinterrupt = frames <-- makes sure any remaining stimuli are displayed / the stimulus presentation is not interrupted by the response
/ trialduration = 3000 <-- set to a long enough value, theoretically the entire time starting from the value specified in /beginresponsetime until the value specified in trialduration should be recorded, i.e. with the values specified here you should get a recording of ~1300 ms duration.
...
</trial>


Dave,

Thank you for your continued support. For some reason, this doesn't seem to work. I mean adding the /trialduration setting. Doing so makes the trial now run automatically without waiting for a recording at all....what have I done wrong? I started with 3250 to give me 1 second for response time but thought maybe that was too short so I changed it to 4250 which should give me 2 seconds for response time, correct? I was operating under the understanding that the 2 seconds would not start until sound was detected (as that seemed to be how it was working prior to entering the trialduration setting) but it appears to simply run automatically without waiting for sound...is there a way to secure a specified amount of time for response time but have that time begin from when sound is detected? Or maybe I simply need to allocate more time for response time....but I'd like the trial not to proceed until the subject has responded....

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ beginresponsetime = 2250
/ responseinterrupt = frames
/ trialduration = 4250
/ validresponse = (anyresponse)

Jason


> I was operating under the understanding that the 2 seconds would not start until sound was detected

No. /trialduration specifies a fixed duration for the trial. The trial will terminate after that time has elapsed, whether a response was given / completed or not.

Only other way I can see is to forego /inputdevice = voicerecord and use /soundcapture instead as in

<trial example>
...
/ soundcapture = true
/ inputdevice = keyboard
/ validresponse = (57)
</trial>

In this case, audio should be captured for the entire trial, i.e. a participant can say their piece and when they're done press the space bar to end the trial.

Dave,

Thanks for your help here. I'm curious about the voicerecord setting...it seems that without the trialduration setting but with the beginresponsetime setting, Inquisit waits after the final stimulus, for an audio response. I like that behavior and would like to keep it if possible but...given that setting, am I able to retain data about the timing of the audio response (in addition to recording the actual response)? I mean, will Inquisit keep data about how quickly after the final stimulus a subject begins his/her utterance? And, I think this is back to my original inquiry, is there a way that I can get Inquist to record for a set amount of time after initial detection of audio? 

Regards

Jason

Dave,

Sorry, I can't seem to figure out how to edit my post here. I see that there is, in fact, data about the timing of auditory responses recorded as 'latency'. I'm not sure of where this time starts but noneteless it is being recorded. So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available when using voicerecord without trialduration.

Regards

Jason

By default, Inquisit will start accepting responses after all stimuli in the stimulus presentation sequence (as given in /stimulustimes) have been displayed. Latency is measure relative to that point. You can override that behavior via /beginresponsetime as explained further up in this thread.

> So I guess my main query is about how to extend the recording duration while keeping the 'aduio detection' feature available.

I don't think there is a way to do that, I'm afraid.

Dave,

Thanks for your reply here. I understand how latency is measured now and don't have any issues with it...actually, I would like to keep it in my trail if possible. My confusion is with the inability to set a desired recording duration which incorporates the latency measure...in other words, records for a set amount of time (3 seconds, 5 seconds, etc.). I see requests for such a feature here in the forums dating back to 2008 and wonder what solutions those individuals worked out...

If I use beginresponsetime I lose the latency measure, correct? I noticed here on the threads that voicerecord is explained as being used for recording a word or short sentence...but for some reason it does not allow me to record more than a very short one or two syllable word before it moves on to the next trial...Would a threshold setting help to ensure Inquisit doesn't move on even though audio is still being presented for recording? I guess what I'm trying to figure out is what condition Inquisit uses to move forward after detecting audio from voicerecord? Is is a hard coded preset amount of time? I'm guessing that is not the case but am not really sure. If it is something else related to threshold, maybe I can tweak it a bit to get something close to what I'm hoping for...sorry, I'm just thinking outloud a bit here in the hopes that doing so will trigger an idea. :-)

Regards

Jason

> If I use beginresponsetime I lose the latency measure, correct?

No, /beginresponsetime merely specifies the point in time relative to which latency is measured, i.e. when the trial begins accepting responses.

As for the rest, I'll gladly think about it some more, but -- as indicated previously -- so far I don't see a way to get what you want. I.e. wait for the start of an utterance indefinitely and then record for a specified amount of time beginning with the start of the utterance.

Dave,

Thank you for the clarification. I will toy around with the beginresponsetime and response duration settings some more to see if I can get a desired flow.

On a related topic, I've somehow managed to corrupt my script (I guess) and now for some reason on the first run through, the audio file is not getting played. It simply jumps forward to the 2nd trial... From the second trial the audio file plays and waits for a voicerecord response (still not using beginresponsetime and duration). It was working fine before...I'm not sure what I could have changed to cause this behavior. I restarted Inquisit just to make sure the problem was not related to the fact that I had left the software running for quite a long time but that didn't make a difference.

My current trial settings are:

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ responseinterrupt = frames
/ validresponse = (anyresponse)

Regards

Jason


I really can't answer that without the script (including all files it actually needs to run). You can put all of that in a ZIP and attach it here (click +Insert -> Add File), and I'll take a look (not sure if today, could be tomorrow).

Dave,

Thanks...I don't think it has anythign to do with the files (audio or images) as they have not changed at all. I'm guessing I've corrupted something in terms of script syntax... Here is the entire script that I am testing with. I've made the beginresponsetime and trialduration changes and am getting close to a desired behavior...but that first audio file is not getting played, which is a new issue for me. :-(

<parameters>
/fontheight = 10%

/responsekeyleft = 30
/responsekeyleft_label = "A"
/responsekeyright = 40
/responsekeyright_label = "'"
</parameters>

<defaults>
/ screencolor = white
/ voicekeythreshold = 15
/ minimumversion = "5.0.0.0"
/ fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1)
</defaults>

<item instructions>

/1 = "This is a timed selection task. GO AS FAST AS YOU CAN but try not to make mistakes.

A series of asterisks, like the following, ******** will be displayed on the screen followed by a quick flash.

You will then see two words.

After the two words appear, you will hear a word.

Repeat the word you hear outloud immediately after you hear the word."

</item>

***************************VALUES**********************
<values>
/selectContinue = 1
</values>
***************************VALUES*********************

<item continue>
/1 = "Press the SPACE BAR to begin"
</item>

<picture mypicture>
/ items = pictureitems
</picture>

<item pictureitems>
/ 1 = "dog.jpg"
/ 2 = "cat.jpg"
/ 3 = "apple.jpg"
/ 4 = "house.jpg"
/ 5 = "ball.jpg"
/ 6 = "banana.jpg"
/ 7 = "boat.jpg"
/ 8 = "snail.jpg"
/ 9 = "tree.jpg"
/10 = "boat.jpg"
</item>

<sound mysound>
/ items = sounditems
/ select = picture.mypicture.currentindex
</sound>

<item sounditems>
/ 1 = "dog.wav"
/ 2 = "cat.wav"
/ 3 = "apple.wav"
/ 4 = "house.wav"
/ 5 = "ball.wav"
/ 6 = "banana.wav"
/ 7 = "boat.wav"
/ 8 = "snail.wav"
/ 9 = "tree.wav"
/ 10 = "car.wav"

</item>

<text correctoption>
/ items = correctitems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item correctitems>
/ 1 = "Dog"
/ 2 = "Cat"
/ 3 = "Apple"
/ 4 = "House"
/ 5 = "Ball"
/ 6 = "Banana"
/ 7 = "Boat"
/ 8 = "Snail"
/ 9 = "Tree"
/ 10 = "Car"
</item>

<text distractoroption>
/ items = distractoritems
/ select = picture.mypicture.currentindex
/ vposition = 50%
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ hposition = list.hpos.nextvalue
</text>

<item distractoritems>
/ 1 = "Cat"
/ 2 = "Dog"
/ 3 = "House"
/ 4 = "Apple"
/ 5 = "Banana"
/ 6 = "Ball"
/ 7 = "Snail"
/ 8 = "Boat"
/ 9 = "Car"
/ 10 = "Tree"
</item>

<item mask>
/1="*******
*******"
</item>

<text mask>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = black
/txbgcolor = white
/position = (50%, 50%)
</text>

<text maskeraser>
/items = mask
/select = 1
/ fontstyle = ("Courier", parameters.fontheight, false, false, false, false, 5, 1)
/ txcolor = white
/txbgcolor = white
/position = (50%, 50%)
</text>

// randomize the left-right position of the two response options
<list hpos>
/ items = (30%, 70%)
/ selectionrate = always
</list>

<text instructions>
/ items = item.instructions
/ hjustify = center
/ size = (90%, 60%)
/ position = (50%, 85%)
/ valign = bottom
/ txcolor = black
/ select = sequence
/ resetinterval = 20
</text>

<text spacebar>
/ items = continue
/ select = values.selectContinue
/ position = (50%, 95%)
/ valign = bottom
</text>

<trial instructions>
/ stimulustimes = [1=instructions, spacebar]
/ correctresponse = (" ")
/ errormessage = false
/ recorddata = false
</trial>

<trial mytrial>
/ stimulustimes = [0= mask; 500=mypicture; 515=clearscreen; 516=mask; 1015=clearscreen; 1700=correctoption, distractoroption; 2200=mysound]
/ inputdevice = voicerecord
/ validresponse = (anyresponse)
/ beginresponsetime = 2201
/ responseinterrupt = frames
/ trialduration = 6000
</trial>

<block myblock>
/ trials = [1 = instructions; 2-11 = mytrial]
</block>




There is nothing obviously wrong with the syntax. When the issue is that some file or files aren't getting played, I need those files. Please put the entire script, including all wav files and images, in a ZIP and attach it here. Thanks.

Dave,

Thanks. Hmm, that is odd...I am attaching the entire package here. Thanks again for your time.

Jason


Attachments
TestDesign-1.zip (216 views, 3.00 MB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
Musashi Jason - Monday, May 28, 2018

Dave,

Thanks. Hmm, that is odd...I am attaching the entire package here. Thanks again for your time.

Jason


Hmm, I'm not seeing this oddly enough, audio files play fine from the 1st trial for me (i.e. the audio is not omitted during the 1st trial). I did have to change the format of the WAVs though for them to work across platforms.

There are a couple of possibilities: It may be that the 1st time the soundcard is initialized on your system creates some internal noise that the microphone picks up and the trial takes as an extremely quick response, cutting off the audio before it's played in full in the 1st trial. A higher /voicekeythreshold may avoid that, as may setting the <sound> element's /erase attribute to "false". I've attached a version with cross-platform compatible WAVs below and the erase setting mentioned above. I've left the /voicekeythreshold alone for the time being. If that doesn't resolve the problem, do you recall which changes you made between the version that was working before and the current one? That might give me an idea of what may be going wrong and where. Thanks!

Attachments
TestDesign-1.zip (217 views, 1.00 MB)
Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Dave - Tuesday, May 29, 2018
Musashi Jason - Monday, May 28, 2018

Dave,

Thanks. Hmm, that is odd...I am attaching the entire package here. Thanks again for your time.

Jason


Hmm, I'm not seeing this oddly enough, audio files play fine from the 1st trial for me (i.e. the audio is not omitted during the 1st trial). I did have to change the format of the WAVs though for them to work across platforms.

There are a couple of possibilities: It may be that the 1st time the soundcard is initialized on your system creates some internal noise that the microphone picks up and the trial takes as an extremely quick response, cutting off the audio before it's played in full in the 1st trial. A higher /voicekeythreshold may avoid that, as may setting the <sound> element's /erase attribute to "false". I've attached a version with cross-platform compatible WAVs below and the erase setting mentioned above. I've left the /voicekeythreshold alone for the time being. If that doesn't resolve the problem, do you recall which changes you made between the version that was working before and the current one? That might give me an idea of what may be going wrong and where. Thanks!

Dave,

Thanks again for your time. Oddly, the package that you sent back works fine...(scrtaching my head) while the one I sent still does not work for me. Rather than waste my time trying to figure out why, I think I'll just delete the old nonfunctioning one and move on. Possibly the wav files contained noise, as you mentioned, that was being picked up...? It's all still in the very early design phase so the audio files are basically dummy placeholders at the moment and not much care was taken when they were recorded.

Thanks again

Jason
Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Musashi Jason - Tuesday, May 29, 2018
Dave - Tuesday, May 29, 2018
Musashi Jason - Monday, May 28, 2018

Dave,

Thanks. Hmm, that is odd...I am attaching the entire package here. Thanks again for your time.

Jason


Hmm, I'm not seeing this oddly enough, audio files play fine from the 1st trial for me (i.e. the audio is not omitted during the 1st trial). I did have to change the format of the WAVs though for them to work across platforms.

There are a couple of possibilities: It may be that the 1st time the soundcard is initialized on your system creates some internal noise that the microphone picks up and the trial takes as an extremely quick response, cutting off the audio before it's played in full in the 1st trial. A higher /voicekeythreshold may avoid that, as may setting the <sound> element's /erase attribute to "false". I've attached a version with cross-platform compatible WAVs below and the erase setting mentioned above. I've left the /voicekeythreshold alone for the time being. If that doesn't resolve the problem, do you recall which changes you made between the version that was working before and the current one? That might give me an idea of what may be going wrong and where. Thanks!

Dave,

Thanks again for your time. Oddly, the package that you sent back works fine...(scrtaching my head) while the one I sent still does not work for me. Rather than waste my time trying to figure out why, I think I'll just delete the old nonfunctioning one and move on. Possibly the wav files contained noise, as you mentioned, that was being picked up...? It's all still in the very early design phase so the audio files are basically dummy placeholders at the moment and not much care was taken when they were recorded.

Thanks again

Jason

Dave,

For some reason, it seems my system is 'evolving' back toward passing through the first trial without recording a response via inputdevice = voicerecord. I say "evolve" because the behavior is not quite as drastic as it was before. The first run through my trial produces the a. photo, b. two text items on screen, and c. audio file. There is a pause after the audio file is played but the spoken response is not recorded. This only happens for the first pass through...from the second pass onwards it functions as expected. As soon as the utterance is spoken (from the 2nd pass through onwards) the two text items disappear from the screen. This does not occur after the 1st one though. 

It seems like the microphone is not being initialized quickly enough or something...? I'm using an Apple MacBook Pro (with touch bar...a fairly new machine)...

I was about to post a question, moving forward for me, about how to now present 'negative' primes (i.e. have a mismatch between image flashed and audio file played) but then noticed this previous problem has crept back in. If you have any advice I would appreciate it.

Regards

Jason

P.S. I added a second trial to my script, which I don't think should affect the behavior of the first but, just in case, I am attaching the entire package here for reference.


Musashi Jason
Musashi Jason
Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)Distinguished Member (4K reputation)
Group: Forum Members
Posts: 61, Visits: 158
Musashi Jason - Thursday, June 7, 2018
Musashi Jason - Tuesday, May 29, 2018
Dave - Tuesday, May 29, 2018
Musashi Jason - Monday, May 28, 2018

Dave,

Thanks. Hmm, that is odd...I am attaching the entire package here. Thanks again for your time.

Jason


Hmm, I'm not seeing this oddly enough, audio files play fine from the 1st trial for me (i.e. the audio is not omitted during the 1st trial). I did have to change the format of the WAVs though for them to work across platforms.

There are a couple of possibilities: It may be that the 1st time the soundcard is initialized on your system creates some internal noise that the microphone picks up and the trial takes as an extremely quick response, cutting off the audio before it's played in full in the 1st trial. A higher /voicekeythreshold may avoid that, as may setting the <sound> element's /erase attribute to "false". I've attached a version with cross-platform compatible WAVs below and the erase setting mentioned above. I've left the /voicekeythreshold alone for the time being. If that doesn't resolve the problem, do you recall which changes you made between the version that was working before and the current one? That might give me an idea of what may be going wrong and where. Thanks!

Dave,

Thanks again for your time. Oddly, the package that you sent back works fine...(scrtaching my head) while the one I sent still does not work for me. Rather than waste my time trying to figure out why, I think I'll just delete the old nonfunctioning one and move on. Possibly the wav files contained noise, as you mentioned, that was being picked up...? It's all still in the very early design phase so the audio files are basically dummy placeholders at the moment and not much care was taken when they were recorded.

Thanks again

Jason

Dave,

For some reason, it seems my system is 'evolving' back toward passing through the first trial without recording a response via inputdevice = voicerecord. I say "evolve" because the behavior is not quite as drastic as it was before. The first run through my trial produces the a. photo, b. two text items on screen, and c. audio file. There is a pause after the audio file is played but the spoken response is not recorded. This only happens for the first pass through...from the second pass onwards it functions as expected. As soon as the utterance is spoken (from the 2nd pass through onwards) the two text items disappear from the screen. This does not occur after the 1st one though. 

It seems like the microphone is not being initialized quickly enough or something...? I'm using an Apple MacBook Pro (with touch bar...a fairly new machine)...

I was about to post a question, moving forward for me, about how to now present 'negative' primes (i.e. have a mismatch between image flashed and audio file played) but then noticed this previous problem has crept back in. If you have any advice I would appreciate it.

Regards

Jason

P.S. I added a second trial to my script, which I don't think should affect the behavior of the first but, just in case, I am attaching the entire package here for reference.


Dave,

For some reason the upload did not work...is there an upload filesize limit? The script package is 2.1 MB...?

Jason
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search