<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?action=history&amp;feed=atom&amp;title=Programmer_Guide%2FSPU_Reference%2FASEG1</id>
	<title>Programmer Guide/SPU Reference/ASEG1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?action=history&amp;feed=atom&amp;title=Programmer_Guide%2FSPU_Reference%2FASEG1"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;action=history"/>
	<updated>2026-05-07T02:10:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=4388&amp;oldid=prev</id>
		<title>Toni: moved Programmer Guide/SPU Reference/ASEG1 - automatic segmentation to Programmer Guide/SPU Reference/ASEG1</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=4388&amp;oldid=prev"/>
		<updated>2011-04-28T09:23:02Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/stx/docs/wiki/index.php/Programmer_Guide/SPU_Reference/ASEG1_-_automatic_segmentation&quot; class=&quot;mw-redirect&quot; title=&quot;Programmer Guide/SPU Reference/ASEG1 - automatic segmentation&quot;&gt;Programmer Guide/SPU Reference/ASEG1 - automatic segmentation&lt;/a&gt; to &lt;a href=&quot;/stx/docs/wiki/index.php/Programmer_Guide/SPU_Reference/ASEG1&quot; title=&quot;Programmer Guide/SPU Reference/ASEG1&quot;&gt;Programmer Guide/SPU Reference/ASEG1&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:23, 28 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Toni</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=1776&amp;oldid=prev</id>
		<title>Admin: 1 revision:&amp;#32;Initial import</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=1776&amp;oldid=prev"/>
		<updated>2010-11-18T16:31:53Z</updated>

		<summary type="html">&lt;p&gt;1 revision: Initial import&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:31, 18 November 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=1775&amp;oldid=prev</id>
		<title>193.171.195.8: initial import</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.kfs.oeaw.ac.at/stx/docs/wiki/index.php?title=Programmer_Guide/SPU_Reference/ASEG1&amp;diff=1775&amp;oldid=prev"/>
		<updated>2010-05-17T13:05:27Z</updated>

		<summary type="html">&lt;p&gt;initial import&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:{{SUBPAGENAME}}}}&lt;br /&gt;
====ASEG1 - automatic segmentation====&lt;br /&gt;
&lt;br /&gt;
=====Usage:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ASEG1 &amp;lt;var&amp;gt;DT TABP TABC TABS TABM TABO P0 P1 P2 P3&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Inputs:=====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|DT&lt;br /&gt;
|time step&lt;br /&gt;
|-&lt;br /&gt;
|TABP&lt;br /&gt;
|name of parameter definition table. Note: all tables are extended shell&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;table&lt;br /&gt;
|-&lt;br /&gt;
|TABC&lt;br /&gt;
|name of channel definition table&lt;br /&gt;
|-&lt;br /&gt;
|TABS&lt;br /&gt;
|name of segment definition table&lt;br /&gt;
|-&lt;br /&gt;
|TABM&lt;br /&gt;
|name of channel&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;to-segment mapping table&lt;br /&gt;
|-&lt;br /&gt;
|TABO&lt;br /&gt;
|name of output table&lt;br /&gt;
|-&lt;br /&gt;
|P0..&amp;lt;var&amp;gt;P3&amp;lt;/var&amp;gt;&lt;br /&gt;
|segmentation parameter inputs (numbers or vectors)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Outputs:=====&lt;br /&gt;
&lt;br /&gt;
none, the output data (segment names and addresses) are stored in (appended to) the output table&lt;br /&gt;
&lt;br /&gt;
=====Function:=====&lt;br /&gt;
&lt;br /&gt;
The segmentation parameters P0-&amp;lt;var&amp;gt;P3&amp;lt;/var&amp;gt; can be any type of parameters (e.g.: RMS, band-RMS, F0) but must be extracted time-synchronous from the signal. It is assumed, that the parameters processed in the evaluation cycle t (t=0,1,....) are extracted from the signal time-interval [t.&amp;lt;var&amp;gt;DT&amp;lt;/var&amp;gt;, (t+1).&amp;lt;var&amp;gt;DT&amp;lt;/var&amp;gt;]. Each parameter value (each number and each vector element) must be defined by an entry of the table &amp;lt;var&amp;gt;TABP&amp;lt;/var&amp;gt;. E.g. if &amp;lt;var&amp;gt;P0&amp;lt;/var&amp;gt; is a vector of three band-RMS values and &amp;lt;var&amp;gt;P1&amp;lt;/var&amp;gt; is the F0 value, the table &amp;lt;var&amp;gt;TABP&amp;lt;/var&amp;gt; must consist of four entries (entry 0..2 for &amp;lt;var&amp;gt;P0&amp;lt;/var&amp;gt;[0,1,2] and entry 3 for &amp;lt;var&amp;gt;P1&amp;lt;/var&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Table 1: &amp;lt;var&amp;gt;TABP&amp;lt;/var&amp;gt;: parameter definitions (2 fields, 1 entry / parameter track){|&lt;br /&gt;
|-&lt;br /&gt;
|Field&lt;br /&gt;
|Content / Description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|defines the parameter track type (0 or 1):0: the parameter track is a continuous function (e.g. RMS); for each frame a value is computed1: the parameter track is not a continuous function (e.g. F0, Formants); for some frames no parameter value can be computed (missing values)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|missing value indicator (any number):for not&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;continuous parameters this field defines the number that is used to indicate a missing parameter value in a frame (e.g. for F0 tracks the missing value indicator is set to 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first segmentation step is implemented by a simple feature detection. For this purpose each parameter is assigned to one or more segmentation channel(s). A channel is used to detect a signal/segment feature based on the values of the assigned parameter. Two detection modes are defined:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|p(t)&lt;br /&gt;
|value of assigned parameter in the frame t&lt;br /&gt;
|-&lt;br /&gt;
|s(t)&lt;br /&gt;
|status of the channel in the frame t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Interval method:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|s(t) = &amp;#039;on&amp;#039;&lt;br /&gt;
|if minimum &amp;lt;= p(t) &amp;lt;= maximum&lt;br /&gt;
|-&lt;br /&gt;
|s(t) = &amp;#039;off&amp;#039;&lt;br /&gt;
|otherwise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Threshold method:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|s(t) = &amp;#039;on&amp;#039;&lt;br /&gt;
|if s(t&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;1) = &amp;#039;off&amp;#039; and p(t) &amp;gt;= on-threshold&lt;br /&gt;
|-&lt;br /&gt;
|s(t) = &amp;#039;off&amp;#039;&lt;br /&gt;
|if s(t&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;1) = &amp;#039;on&amp;#039; and p(t) &amp;lt;= off-threshold&lt;br /&gt;
|-&lt;br /&gt;
|s(t) = s(t&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;1)&lt;br /&gt;
|otherwise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Table 2: TABC: channel definitions (5 fields, 1 entry / channel, multiple channels / parameters are possible){|&lt;br /&gt;
|-&lt;br /&gt;
|Field&lt;br /&gt;
|Content / Description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|index of the assigned parameter (0 to number_of_parameters&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;1)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|selects the type of condition (0 or 1)&lt;br /&gt;
0: detect/filter an interval of parameter values&lt;br /&gt;
1: split parameter values using a threshold&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|lower interval boundary (minimum) or on&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;threshold&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|upper interval boundary (maximum) or off&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;threshold&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|selects the processing used for frames with missing values (0, 1 or 2)&lt;br /&gt;
0: set channel to &amp;#039;off&amp;#039;&lt;br /&gt;
1: set channel to &amp;#039;on&amp;#039;&lt;br /&gt;
2: do not change channel (stay)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the second segmentation step the channels (features) are combined. A mapping (mask) is used to define the feature configuration of a segment.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|mi,j&lt;br /&gt;
|mapping (mask) for segment i to channel j&lt;br /&gt;
|-&lt;br /&gt;
|mi,j =&lt;br /&gt;
|0&lt;br /&gt;
|channel j must be &amp;#039;off&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|1&lt;br /&gt;
|channel j must be &amp;#039;on&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|2&lt;br /&gt;
|channel j is ignored&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If a channel configuration &amp;lt;c0(t)..cn&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;1(t)&amp;gt; (n = number of channels) matches the conditions defined by the mapping &amp;lt;mi,0..mi,n-1&amp;gt;, the segment status si(t) is set to &amp;#039;on&amp;#039;, otherwise it is set to &amp;#039;off&amp;#039;. If multiple mappings are defined for a channel, the results of the matches are logically ORed (only one mapping must match).&lt;br /&gt;
&lt;br /&gt;
Table 3: &amp;lt;var&amp;gt;TABS&amp;lt;/var&amp;gt;: segment definitions (5 fields, 1 segment / entry){|&lt;br /&gt;
|-&lt;br /&gt;
|Field&lt;br /&gt;
|Content / Description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|minimum segment &amp;#039;on&amp;#039; duration (&amp;gt;0)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|maximum segment &amp;#039;off&amp;#039; (pause) duration inside the segment (&amp;gt;=0)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|pre&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;offset = time subtracted from the detected beginning (&amp;gt;=0)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|post&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;offset = time added to the detected end (&amp;gt;=0)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|number of channel/segment mappings used for the segment (&amp;gt;0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The mappings for all segments are stored in the mapping table TABM. This table consists of only one field and table entry for each mapping of a segment. E.g. if the 1st segment uses 3 mappings and the 2nd segment uses 1 mapping, the entries 0, 1 and 2 of &amp;lt;var&amp;gt;TABM&amp;lt;/var&amp;gt; are the mappings for the 1st segment and the entry 3 is the mapping for the 2nd segment.&lt;br /&gt;
&lt;br /&gt;
In the third step some decisions/processing based on the durations and offsets defined for a segment are performed:&lt;br /&gt;
&lt;br /&gt;
If the stream of &amp;#039;off&amp;#039; frames (pause) between two streams of &amp;#039;on&amp;#039; frames (signal) is shorter than the defined maximum segment &amp;#039;off&amp;#039; duration inside a segment, the two &amp;#039;on&amp;#039; streams are connected.&lt;br /&gt;
&lt;br /&gt;
If the duration of the &amp;#039;on&amp;#039;-stream is shorter than the minimum segment &amp;#039;on&amp;#039; duration, the &amp;#039;on&amp;#039;-stream is ignored (not saved)&lt;br /&gt;
&lt;br /&gt;
Before the segment is saved, the begin- and end-time are corrected to &amp;#039;detected-begin-time – pre-offset&amp;#039; and end-time = detected-end-time + post-offset&lt;br /&gt;
&lt;br /&gt;
The checked and corrected segment definitions are saved into the output table &amp;lt;var&amp;gt;TABO&amp;lt;/var&amp;gt;. For each segment the index of the segment definition entry (for identification) and the begin- and end-time is saved.&lt;br /&gt;
&lt;br /&gt;
Table 4: &amp;lt;var&amp;gt;TABO&amp;lt;/var&amp;gt;: output table (3 fields, 1 field / segment){|&lt;br /&gt;
|-&lt;br /&gt;
|Field&lt;br /&gt;
|Content / Description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|identification = index of segment definition entry&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|begin time&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|end time&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>193.171.195.8</name></author>
	</entry>
</feed>