Spaces:
Running
Running
function createAudioHTML(path) { | |
return '<audio controls controlslist="nodownload" class="px-1"> <source src=' + | |
path + | |
' type="audio/wav">Your browser does not support the audio element.</audio>'; | |
} | |
function generateExampleRow(table_row, base_dir, dirs, filename, col_offset) { | |
for (var i = 0; i < dirs.length; i++) { | |
let cell = table_row.cells[col_offset + i]; | |
let p = base_dir + '/' + dirs[i] + '/' + filename; | |
if (p.endsWith('txt')) { | |
var req = new XMLHttpRequest(); | |
req.onreadystatechange = function() { | |
if (this.readyState === this.DONE) { | |
cell.innerHTML = '<font size="-1">' + req.responseText + '</font>'; | |
} | |
}; | |
req.open('GET', p); | |
req.send(null); | |
} else { | |
cell.innerHTML = cell.innerHTML + createAudioHTML(p); | |
} | |
} | |
} | |
function generateCVSS(tableId) { | |
let table = document.getElementById(tableId); | |
let base_dir = 'data/cvss_c_test' | |
let dirs = ['source', 'hibiki', 'seamless']; | |
let filenames = [ | |
"cvss-fr2en-test-idx14345-20007437.wav", | |
"cvss-fr2en-test-idx14410-20011543.wav", | |
"cvss-fr2en-test-idx14603-20030929.wav", | |
"cvss-fr2en-test-idx14695-20041791.wav", | |
"cvss-fr2en-test-idx4562-19004869.wav", | |
]; | |
for (var i = 0; i < filenames.length; i++) { | |
generateExampleRow(table.rows[1 + i], base_dir, dirs, filenames[i], 0); | |
} | |
} | |
function generateNTREX(tableId) { | |
let table = document.getElementById(tableId); | |
let base_dir = 'data/audio_ntrex_long' | |
let dirs = ['source', 'hibiki', 'seamless']; | |
let filenames = [ | |
"10887_ea80c8e6-883d-4afe-841b-598ce7db3779.wav", | |
"3120_a63eabfc-d5aa-4353-84d0-9c5c068a1b38.wav", | |
"5196_ea80c8e6-883d-4afe-841b-598ce7db3779.wav", | |
"6855_f3c3ea82-42ef-4c09-b4aa-544a4c95518b.wav", | |
"9605_83f1360e-7775-4d36-89f6-60649041c935.wav" | |
]; | |
for (var i = 0; i < filenames.length; i++) { | |
generateExampleRow(table.rows[1 + i], base_dir, dirs, filenames[i], 0); | |
} | |
} | |
function generateVoxPopuli(tableId) { | |
let table = document.getElementById(tableId); | |
let base_dir = 'data/voxpopuli' | |
let dirs = ['source', 'hibiki_cfg=1', 'hibiki_cfg=3', 'hibiki_cfg=10', 'seamless']; | |
let filenames = [ | |
"20090422-0900-PLENARY-3_20090422-09:53:50_7.wav", | |
"20090506-0900-PLENARY-12_20090506-17:43:49_4.wav", | |
"20090914-0900-PLENARY-15_20090914-20:43:54_7.wav", | |
"20090916-0900-PLENARY-4_20090916-10:55:02_12.wav", | |
]; | |
for (var i = 0; i < filenames.length; i++) { | |
generateExampleRow(table.rows[1 + i], base_dir, dirs, filenames[i], 0); | |
} | |
} | |
generateNTREX('ntrex-table'); | |
generateCVSS('cvss-table'); | |
generateVoxPopuli('voxpopuli-table'); | |
// Borrowed from https://nu-dialogue.github.io/j-moshi/ | |
$(document).ready(function() { | |
{ | |
const columns = ['Hibiki', 'Seamless']; | |
const rows = [ | |
['data-stereo/hibiki1.wav', 'data-stereo/seamless1.wav'], | |
['data-stereo/hibiki2.wav', 'data-stereo/seamless2.wav'], | |
['data-stereo/hibiki3.wav', 'data-stereo/seamless3.wav'], | |
]; | |
const table = $('#vis-table'); | |
// Add header | |
const thead = $('<thead>'); | |
const headerRow = $('<tr>'); | |
columns.forEach(header => { | |
headerRow.append($('<th style="text-align: center">').text(header)); | |
}); | |
thead.append(headerRow); | |
table.append(thead); | |
// Add rows | |
const tbody = $('<tbody>'); | |
rows.forEach((files, i) => { | |
const row = $('<tr>'); | |
files.forEach((files, j) => { | |
// Add waveform cell | |
const waveCell = $('<td style="text-align: center">');//.css('min-width', '200px'); | |
const waveform = $('<div>').attr('id', `waveform-${i}-${j}`); | |
waveCell.append(waveform); | |
const playPauseButton = ` | |
<button class="btn btn-secondary" data-action="play" id="play-pause-${i}-${j}"> | |
<i class="bi bi-play-fill"></i> Play / <i class="bi bi-pause-fill"></i> Pause | |
</button> | |
`; | |
waveCell.append(playPauseButton); | |
row.append(waveCell); | |
}); | |
tbody.append(row); | |
}); | |
table.append(tbody); | |
// Create wavesurfer instances | |
rows.forEach((files, i) => { | |
files.forEach((file, j) => { | |
const wavesurfer = WaveSurfer.create({ | |
container: `#waveform-${i}-${j}`, | |
url: file, | |
splitChannels: [ | |
{ | |
waveColor: '#2E7D9E', | |
progressColor: '#173E4E', | |
}, | |
{ | |
waveColor: '#E57872', | |
progressColor: '#2A0908', | |
} | |
], | |
barWidth: 2, | |
height: 55, | |
width: 700, | |
}); | |
$(`#play-pause-${i}-${j}`).click(() => { | |
wavesurfer.playPause(); | |
}); | |
}); | |
}); | |
} | |
{ | |
const columns = ['Real Human Interpretation', 'Hibiki', 'Seamless']; | |
const dirs = [ | |
"data/voxpopuli/gt_with_fr_background", | |
"data/voxpopuli/hibiki_cfg=3_with_fr_background", | |
"data/voxpopuli/seamless_with_fr_background", | |
]; | |
const rows = [ | |
"20090422-0900-PLENARY-3_20090422-09:53:50_7.wav", | |
"20090506-0900-PLENARY-12_20090506-17:43:49_4.wav", | |
"20090914-0900-PLENARY-15_20090914-20:43:54_7.wav", | |
"20090916-0900-PLENARY-4_20090916-10:55:02_12.wav", | |
]; | |
const table = $('#vis-table2'); | |
// Add header | |
const thead = $('<thead>'); | |
const headerRow = $('<tr>'); | |
columns.forEach(header => { | |
headerRow.append($('<th style="text-align: center">').text(header)); | |
}); | |
thead.append(headerRow); | |
table.append(thead); | |
// Add rows | |
const tbody = $('<tbody>'); | |
rows.forEach((file, i) => { | |
const row = $('<tr>'); | |
dirs.forEach((d, j) => { | |
// Add waveform cell | |
const waveCell = $('<td style="text-align: center">');//.css('min-width', '200px'); | |
const waveform = $('<div>').attr('id', `waveform2-${i}-${j}`); | |
waveCell.append(waveform); | |
const playPauseButton = ` | |
<button class="btn btn-secondary" data-action="play" id="play-pause-${i}-${j}"> | |
<i class="bi bi-play-fill"></i> Play / <i class="bi bi-pause-fill"></i> Pause | |
</button> | |
`; | |
waveCell.append(playPauseButton); | |
row.append(waveCell); | |
}); | |
tbody.append(row); | |
}); | |
table.append(tbody); | |
// Create wavesurfer instances | |
rows.forEach((file, i) => { | |
dirs.forEach((dir, j) => { | |
const wavesurfer = WaveSurfer.create({ | |
container: `#waveform2-${i}-${j}`, | |
url: dir + '/' + file, | |
barWidth: 2, | |
height: 55, | |
}); | |
$(`#play-pause-${i}-${j}`).click(() => { | |
wavesurfer.playPause(); | |
}); | |
}); | |
}); | |
} | |
}); | |