MirusMentis Skrevet 1. juni 2015 Del Skrevet 1. juni 2015 Jeg har brukt Vera litt og der kunne man bruke sonos enheter for tts avspilling. Jeg kunne også bruke denne type url`r for å få norsk uttalelse: http://translate.google.com/translate_tts?tl=no&q=Det%20er%20meldt%20lettskyet%20v%C3%A6r,%20n%C3%A5%20er%20det%2012%20grader%20ute.%20forvent%2018%20grader%20senere%20i%20dag. Med Homeseer så får jeg også til tts på sonos, men med en kjip engelsk stemme. Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Ja, så posten din på HS-forumet, og det var jo en spennende måte å gjøre det på. Jeg tror imidlertid du bryter noen bruksvilkår hos Google Translate så en offisiell støtte fra HS tror jeg ikke du finner. Men umulig å få til burde det ikke være, i utgangspunktet er det jo kun snakk om å laste ned filen å pushe det til Sonos (for deg) eller Squeezebox (for meg). Jeg personlig synes det er bedre å høre på en god engelsk stemme enn en dårlig norsk stemme (á la Google Translate), og selv med en "skikkelig" norsk stemme så er de engelske bedre. I tillegg kan jeg jo ikke svare maskinen på norsk, jeg må snakke engelsk. Det var rart å høre norsk, men svare på engelsk så jeg byttet. Kjøpte Neospeech "Paul" en gang for mange år siden da den var på tilbud. Jeg har til nå brukt speech til annonsering, som f.eks. - "There's somebody at the door" når det ringer på - "It's time for bed" når det nærmer seg leggetid og det fremdeles er lys i stua og/eller TVen er på. - "No really! It's time for bed!" 10 minutter senere og lyset fremdeles er på... - "Washer or dryer is done" når vaskemaskin/tørketrommel - "Kid 1 is making noise" basert på lydsensor på barnesoverom 1 - "Kid 2 is making noise" (se over) - "Remember to prepare trashcans for tomorrow morning" dagen før søppelbilen kommer ... og en del annet småsnacks. Fermate her på forumet har brukt TTS mye, og inspirert av han og denne posten har jeg også begynt å sette det litt mer opp. Det er litt stilig å si "start irrigation" til mobilen, og så blir hagen vannet. (Nå skjer jo det likevel "automatisk" i år...) Lenke til kommentar
MirusMentis Skrevet 2. juni 2015 Forfatter Del Skrevet 2. juni 2015 Svare tilbake kommer vi nok ikke til å gjøre, Jeg synes de engelske stemmene som følger med er forferdelige Og vil heller ha en norsk. Mulig man bryter noen retningslinjer, men det ganske mange plugins/api`er rundt omkring som baserer seg på nettopp denne tjenesten for TTS. Jeg fant et annet innlegg fra deg på HS forumet, der du bruker dette for å laste ned en fil. My.Computer.Network.DownloadFile("http://someurl.com/somefile.jpg", "c:\local_filename.jpg" Vet du om en funksjon for å laste ned en stream til en mp3 fil, da kan jeg jo spille den av umiddelbart med sonos pluginen, Jeg fant et eksempel som bruker node.js, men skulle gjerne fått brukt dette fra HS/VBscript/.NEt function tryDownloadTTS(phrase, language, callback) { // Use Google tts translation service to create a mp3 file var tts_request = 'http://translate.google.com/translate_tts?ie=UTF-8&q=' + phrase + '&tl=' + language; // Construct a filesystem neutral filename var filename = crypto.createHash('sha1').update(phrase).digest('hex') + '-' + language + '.mp3'; var filepath = path.resolve(webroot, 'tts', filename); // If not already downloaded request translation fs.stat(filepath, function (err, stat) { if (err) { console.log('Downloading new tts message file: ' + filepath); var file = fs.createWriteStream(filepath); var request = http.get(tts_request, function (response) { response.pipe(file); file.on('finish', function () { file.end(); callback(true, filename); }); }).on('error', function (err) { console.error('could not download file', filename, err); fs.unlink(dest); callback(false); }); } else { console.log('Using cached tts message file: ' + filename); callback(true, filename); } Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Okay, da kan du jo laste ned direkte og lagre det som MP3 det også. Dim speakThis as String = "Dette er en norsk tekst" Dim remoteFile as String = "http://translate.google.com/translate_tts?tl=no&q=" & speakThis Dim localFile as String = "c:\tts.mp3" 'Download the file My.Computer.Network.DownloadFile(remoteFile, localFile) Hvis du vil ha det i et script som tar tekstlinjen din som parameter så kan vi gjøre dette: Sub Main(Byval input as Object) Dim speakThis as String = input.ToString Dim remoteFile as String = "http://translate.google.com/translate_tts?tl=no&q=" & speakThis Dim localFile as String = "c:\tts.mp3" 'Download the file My.Computer.Network.DownloadFile(remoteFile, localFile) End Sub ... som du da kaller slik: Fungerer fint. Lenke til kommentar
MirusMentis Skrevet 2. juni 2015 Forfatter Del Skrevet 2. juni 2015 (endret) Jey! Må testes. edit: funker som bare det Måbare finpusse litt så jeg kan bruke device value fra div enheter. Samt dytte det ut på sonos`n. Endret 2. juni 2015 av MirusMentis Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Mulig du kan bruke replacement variables sammen med parameter, men det må du teste selv. Hvis det fungerer så kan du hente verdier og strenger direkte fra device'r. Lenke til kommentar
MirusMentis Skrevet 2. juni 2015 Forfatter Del Skrevet 2. juni 2015 Eller så er det vel ikke værre enn å putte inn "dim utetemp as hs.deviceval(198) inn i scriptet? Der 198 er DeviceRef for en tempgiver. Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Nei, absolutt ikke. Men da kan det være du endre med å laget et nytt script for hver lille ting du vil si. Kan fort bli litt trøblete å holde orden på i lengden. Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 (endret) Nytt script: Sub Main(Byval input as Object) Dim speakThis as String = hs.ReplaceVariables(input.ToString) Dim remoteFile as String = "http://translate.google.com/translate_tts?tl=no&q=" & speakThis Dim localFile as String = "c:\Users\Magnus\Desktop\tts.mp3" 'Download the file My.Computer.Network.DownloadFile(remoteFile, localFile, "", "", False, 3000, True) End Sub ... med $$DVR:1085: fungerte det fint. Den oversetter nevnte replacement variables, og overskriver filen hvis den kjøres. Det eneste du da trenger er å huke av for "Wait for script to finish before continuing" før du pusher mp3-filen videre til Sonos. tts.mp3 Endret 2. juni 2015 av Moskus Lenke til kommentar
MirusMentis Skrevet 2. juni 2015 Forfatter Del Skrevet 2. juni 2015 Jeg hadde tenkt å legge inn sonos play funksjonen i bunn av scriptet..Men det er kankje lite hensiktsmessig. Mtp hvordan det skalerer når man begynner å få en del forskjellige events man vil ha TTS på. Må tenke litt på dette. Kan man ha flere ting i input/parameter feltet? Hørtes slik ut på lydklippet du la ut. f.eks bygge hele strengen der. "Det er" && $$DVR:123: && "grader utendørs" (usikker på syntaks for VB) Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 (endret) f.eks bygge hele strengen der. "Det er" && $$DVR:123: && "grader utendørs" (usikker på syntaks for VB) Det fine med HS sine replacement variables er at du legger dem direkte i hele strengen. Så ditt eksempel blir da: "Det er $$DVR:123: grader utendørs" Som gjør at du dermed kan kombinere flere som dette: "Det er $$DVR:123: grader utendørs og $$DVR:321: grader innendørs." (men ellers er det kun ett &-tegn for å binde vb.net-strenger, eller du kan bruke + som i C#). Endret 2. juni 2015 av Moskus Lenke til kommentar
MirusMentis Skrevet 2. juni 2015 Forfatter Del Skrevet 2. juni 2015 (endret) f.eks bygge hele strengen der. "Det er" && $$DVR:123: && "grader utendørs" (usikker på syntaks for VB) Det fine med HS sine replacement variables er at du legger dem direkte i hele strengen. Så ditt eksempel blir da: "Det er $$DVR:123: grader utendørs" Som gjør at du dermed kan kombinere flere som dette: "Det er $$DVR:123: grader utendørs og $$DVR:321: grader innendørs." (men ellers er det kun ett &-tegn for å binde vb.net-strenger, eller du kan bruke + som i C#). Det betyr da at hele feltet "replacement variables" blir tatt med inn som 1 parameter? (input.toString) Jeg kan ikke sende med flere argumenter? f.eks om jeg vil ha et generisk TTS script, og bruke volum, sonos-player, språk etc som argumenter? kvasi-kode: TTS.vb /string "Det er $$dvr:123 grader ute" /lan "no" /volume "60" /player "sonos1" Endret 2. juni 2015 av MirusMentis Lenke til kommentar
Moskus Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Scripts tar KUN ett argument: "input" i mitt tilfellet. (Det må av en eller annen grunn være av typen "Object", selv om alle scripts sender en string.) Skal du sende flere argumenter må du bygge en string parser for det, men det er ikke særlig vanskelig. Se eksempel under: Sub Main(Byval input as Object) Dim variables() as String = input.ToString.Split("|") Dim speakThis as String = hs.ReplaceVariables(variables(0)) Dim useLAN as Boolean = variables(1) Dim volume as Integer = variables(2) Dim playerName as String = variables(3) Dim remoteFile as String = "http://translate.google.com/translate_tts?tl=no&q=" & speakThis Dim localFile as String = "c:\Users\Magnus\Desktop\tts.mp3" 'Download the file My.Computer.Network.DownloadFile(remoteFile, localFile, "", "", False, 3000, True) 'Do something clever with the other variables here... End Sub Method er fremdeles Main. Parameter er dette: Dette er strengen din med $$DVR:123: variabler|False|60|sonos1 .... absolutt ikke testet, men jeg kan ikke se noen feil (mulig jeg må putte inn CBol() og CInt())) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå