Archive

Archive for the ‘service-is-programming’ Category

Testing my Langlabemailer…

image

… to improve the integration of the digital audio lab into the university’s language teaching processes – 1000 emails at a time. Smile (Coming soon: same day delivery. More on this project will be available here: https://2013.iallt.org/session/driving-tutorial-call-face-face-classroom-and-what-it-took).

Scraping RSS of online actualités for language learning materials production

  1. The capability of RSS-news feed integration of foreign language news may be standard now in most LMS, but was not in 2002 (not even having an LMS was standard, I had to build my own while it took the university a few more years to adopt Blackboard as I had recommended in 2000): cc-calico-news-glossing.2
  2. But RSS-feed display is skin-deep and, even in extensive-reading pedagogies, not sufficient for integration into teaching and learning which requires more post-processing.
  3. At a recent Digital Humanities Unconference, I was asked how I had “scraped” (RSS-scraping was chosen since it easier than screen scraping,  for RSS is devoid of most markup, as long as it validates) into a SQL-server database. Here are some code-snippets to get you
    1. from the web glossing-rss-news--vs.net-c#
    2. into the database: sql-portal-csvs-codecc-ms-sql-server2cc-ms-sql-server3
    3. The scraped plain text in the database can form the foundation for post-processing for SLA-purposes, see e.g.  glossing for reading comprehension facilitation or question generation with the trpQuizConverter for

Automating language learning listening material creation with Google Translate text-to-speech: The technology

  1. A digital audio lab heavily depends on the availability of, but does not usually come with digital learning materials (and recent exceptions are exceptions for a reason)  Some digital audio materials that come with your textbook may be adaptable. “Rolling your own” has all kinds of advantages (allows for personalization, for both teachers to express themselves, and for students to learn), but can be a chore.
  2. Can the LRC find a workaround?  Here is one attempt: making Google translate (too often abused by students in its original interface) text-to-speech (unusable for learning material in its original interface since severely crippled) usable for digital audio learning material production, provided you have a source text in the target language. image
  3. GoogleTTS can serve as the gateway to better suiting Google Translate text-to-speech features to the needs of the LRC:
    1. imageGoogleTTS allows for arbitrary-length input text (it chunks it automatically).
    2. GoogleTTS produces intermediate local audio files which we can postprocess.
    3. Google Translate’s automatic language recognition remains a sore point: it is not reliable. Unlike Google Translate, GoogleTTS has no interface to set the language manually when the automatic recognition fails.
  4. Batch-download the files from Google Translate, using MS-PowerShell: <
    $global:folder = 'G:\Temporary Internet Files\Content.IE5'
    $filter = '*.mp3' # &lt;-- set this according to your requirements
    $global:destination = 'G:\conf\programs\GoogleTTS\mp3'
    $global:path
    $global:path1
    $currenttimeFunction MonitorAndMoveFile{
    $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
    IncludeSubdirectories = $true # ja, brauch ich für googletts i&lt;-- set this according to your requirements
    NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
    }
    $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { # the even monitored is file created - to force recreation of files by googletts, you may have to clear watched folder of all mp3 &lt; 100kb first
    $global:path = $Event.SourceEventArgs.FullPath
    Write-Host $global:path -ForegroundColor Magenta # this works also
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    start-sleep -Seconds 2 # The OnCreated event is raised as soon as a file is created.
    if ($global:path -ne $global:path1) # it is a createdevent on a different file from last time - just in caseon oncreated not firing clear cut, but it seems to
    {
    $currenttime = Get-Date -Format yyyy-MM-dd-hhmmss
    Write-Host "attempt copy $global:path1 to $cuurrenttime" # try copying the past file
    # Copy-Item -Path $global:path1 -Destination "G:\conf\programs\GoogleTTS\mp3\$currenttime.mp3" -Force # that worked with the last generated file, wait: the last one is the one that remaisn behind, earlier ones get overwritten
    Copy-Item -LiteralPath $global:path1 -Destination "G:\conf\programs\GoogleTTS\mp3\$currenttime.mp3" -Force # that worked with the last generated file, wait: the last one is the one that remaisn behind, earlier ones get overwritten
    # use parameter -literalPath because files in the temp folder have usually [ and ] inside the name which acts as wildcards characters
    $global:path1 = $global:path
    }}
    while (1) {
    sleep -Milliseconds 100
    write-host $global:path # this works
    }}
    MonitorAndMoveFile
    #Unregister-Event -SourceIdentifier FileCreated
    
    
  5. Merge the downloaded files (wisely numbered sequentially):
  6. image
  7. Fix minor errors in your audio editor:
  8. image
  9. Done:
    1. Here I have a lot of questions for a speaking exam in ESL, and with a much better accent than my own.
    2. Nifty, plus output sounds even better for German than for English. Note, there is no attempt to parse sentences semantically. Some languages chunk better than others (I made some little improvements in this regard to the original program). Other common problems include numbers and in German I find myself, when listening, tending to look up once in a while and shake a high school students by the shoulders, asking him: “Do you actually understand what you are reading?!” Smile– which in my eyes is an indicator to the progress made in speech-synthesis.
    3. Other examples include French,
    4. Hindi,
    5. Italian,
    6. Spanish.
  10. So can the LRC relieve teachers from recording their cue files for the digital audio lab listening comprehension and exam? Within limitiations.

How to batch-produce animated-GIFs in different speeds

As a little time saver, here is a program (64bit) that automates animated-GIF production with the free UnFreez (a bit hairy to control from AutoIT, hence the mouse-moves) for a dozen or so different speeds. Decompile if you need to adjust it, otherwise no AutoIT software is needed. All other prerequisites are  explained in the startup dialogue, rename the dummy output files to your liking.

Looking forward to the Digital Humanities Unconference at UNC Charlotte

  1. Why I come to THATCamp Piedmont:
    1. I am looking for practitioners of NLP in a language and literature teaching context since I am working on Using NLP tools to automate production and correction of interactive learning material  (presented at Calico 2012)
    2. for the Learning Exercise Creation Engines (presented at EUROCALL 2007) I developed.
  2. A little about myself:
    1. My Ph.D. thesis expanded the close reading of textual variants in the German editorial schools of Hans Zäch and the use of the computer-generated textual concordances in the interpretation and selection of textual variants into a corpus linguistic-inspired approach, that traced Leitmotifs in the work  (partially first digitized by myself) of the foremost Swiss-German classic as a digital corpus using Regular Expressions programming.
    2. I have since applied my corpus linguistic approach to
      1. the use of machine translation software
      2. the automation of learning material creation  (glossing, question generation, differentiation) on the basis of natural language processing of textual  (film subtitles, news) corpora.

Code documentation for a job ticket assignment and reporting application

  1. JobAssignments allows for managing job tickets with easy tagging and filtering of task assignments, and for aggregate analysis and reporting. 
  2. Originally developed only for simple tag aggregation reports (watch a demo), JobAssignments  can now also analyze the tag graph: jobassignments_tags_keyneighbours
  3. Click the table of contents on the right to browse the VBA documentation built with Aivosto.
  4. imageimage

How you can resolve Enterprise Library 5 Visual Studio 2012 error: "Could not locate the Enterprise Library binaries required to launch the configuration console"

2012/11/17 3 comments
  1. When right-clicking on my App.config to access the Enterprise Library configuration tool, I kept getting this error:entlib5install2
  2. after installing
    1. VS.net 2012;
    2. Enterprise library 5.0.414 through nuget (why does nuget install only this older version?);
    3. the unofficial Enterprise Library Extension vsix updated for VS.net 2012 published by the Enterprise Library team here.
  3. What fixed this error for me was (YMMV, November 2012):
    1. installing Enterprise Library 5.0 optional update 1 (=5.0.515) using this approach:
      • msiexec /i "Enterprise Library 5.0.msi" REINSTALLMODE=vomus REINSTALL=ALL
    2. – Adding to the vs.net 2012 SLN file, at the end of "Global" (immediately before "EndGlobal")
      • GlobalSection(ExtensibilityGlobals) = postSolution
        EnterpriseLibraryConfigurationToolBinariesPath = C:\Program Files (x86)\Microsoft Enterprise Library 5.0\Bin
        EndGlobalSection
        entlib5install

Language Lab Emailer, new software to integrate the digital audio lab and classroom management system into the language teaching and learning workflow

image