mikrocontroller.net

Forum: Projekte & Code MegaLOL


Autor: Ulrich Radig (radiguli) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Das sinnloseste Projekt von mir was ich bisher hatte. MegaLOL der 
sprechende AVR.
Dazu habe ich einen Lautsprecher einfach an einen Port des µC 
angeschlossen, genauer gesagt am OC0 wegen der PWM Erzeugung. Dabei gebe 
ich mit Hilfe des Timer1 immer ein neues PWM Signal auf den Ausgang. 
Aufgrund des geringen Speichers eines ATMega32 kommt man so auf ca. 
4sec. bei einer Sampelrate von 8000Hz bei 8Bit. Ein SPI – RAM von 1MB 
oder sogar eine MMC/SD – Karte wäre nicht schlecht. Aber ich wollte 
dieses Projekt klein halten. Aufgebaut habe ich das Projekt mit dem 
Pollin AVR Board. Bilder und Source und Schaltplan im Anhang oder auf 
meiner Webseite.

Gruß
Ulrich

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, dazu ist mir gleich etwas eingefallen.
Zum MIDI/RS232-80C535 Board von Wickenhäuser (1993) gab es das Programm 
"PHONEM" mit dem man ungefähr knapp 1 Minute in 32K bekam. Dazu wurden 
die Sprachdaten im Computer durch eine FFT gejagt, der Controller baute 
aus den gespeicherten Koeffizienten das Signal nach und gab es über 
Software-PWM aus...

Gruß Jörg

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte mal versucht sowas nachzubauen, um viel Sprache in einen AVR 
zu bekommen:
Eine FFT, aus den Amplituden wurden die stärksten ausgesucht und alle 
anderen verworfen. So kam ich auch auf etwa 500Bytes/s, aber das ganze 
hört sich einfach nur schrecklich an (man hört die einzelnen Frequenzen 
deutlich aus dem Gemisch heraus). Am Ende habe ich das Projekt verworfen 
und einen externen Flash mit SPI angeschlossen.

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt auch 1 bit sound, da hab ich irgendwo mal ein Programm gesehen 
wo eine 1 bit sequenz erzeugt, die man auf ein RC Glied geben muss um 
eine geglättete Wellenform zu erzeugen.

Das ganze könnte man per SPI bestimmt gut ausgeben (ähnlich wie Ulrichs 
"SPI basierte" TV Karte)

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1 Bit Sound + RC Tiefpass = PWM !

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wär's mit CVSD (continuous variable slope delta modulation) ?

Am PC habe ich sowas mal gemacht, für ein Sample braucht man anstatt 8 
bit nur noch 1 bit. Weiß jetzt leider nicht ob man das platz- und 
performancetechnisch in nen AVR bekommt.

Stefan

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... wrote:
> 1 Bit Sound + RC Tiefpass = PWM !

Das ist eine Möglichkeit, in der Praxis macht man das aber anderst: 
Delta-Sigma-DAC
Selbst die heutigen >20bit ADCs/DACs arbeiten eigentlich nur mit einem 
Bit. Die Datenrate liegt dafür dann auch bei etlichen MBit/s nur um 
44kHz/16bit zu erzeugen. Sparen tut man also mit diesem Verfahren 
nichts, außer an den Kosten für hochauflösende DACs/ADCs.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

fällt mir gerade was ein...
Amiga-Narrator-Device fällt mir dazu ein oder SAM vom C64.

Gibt es eigentlich irgendeine freie Source für eine Phonem-Basierte 
Ausgabe?

Ohne jetzt auf die Qualität einzugehen (Hauptproblem war, daß es keine 
guten deutschen Phonem-Tabellen gab), sollte das doch von der 
Rechenleistung auf einem AVR kein Problem sein, damit (fast) beliebige 
Texte vorzulesen.

Gruß aus Berlin
Michael

Autor: Ulrich Radig (radiguli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Also ich denke mal sowas sollte auch auf einen AVR gehen. Leider gibt es 
nicht mehr das FFT Programm "Speech" von Wickenhäuser. Sonst hätte ich 
mal so einige Phonem untergebracht (English).

Gruss
Ulrich

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier zum direkten Ausprobieren der alte Speak and Spell von Texas 
Istruments mit  "Linear predictive coding"  in einer Emulation:
http://www.speaknspell.co.uk/
Einfach auf das Bild links klicken, er liest ein Wort das man dann mit 
der Maus eintippen muß. Kein Phonemsynthesizer, aber ähnliche 
Sprachqualität.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wie wäre es mit einem einfach Packalgorithmus: Nicht die absoluten Werte 
speichern, sondern nur die Differenz zum vorherigen Wert. Bei max. 3 Bit 
Differenz könnte man 2 Werte pro Byte speichern (mit Vorzeichen).Nennt 
sich 'ADPCM'.

MfG Spess

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
hab das projekt gerade mal ausprobiert. es funktioniert nur leider bin 
ich nicht in der lage einzuschätzen ob es richtig funktioniert, wie soll 
denn der sound klingen? bzw. mit welchem tool konvertiert man wave files 
in dieses header format? sehr interessant allerdings ;)

Autor: Ulrich Radig (radiguli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Habe eine Wavedatei mit WinRecorder aufgenommen (8Khz 8Bit). Habe diese 
Datei duch mein Programm Winbin bearbeitet und in c eingebunden.
Das Tool gibt es auf meiner Homepage.

Gruss
Ulrich

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da der Waveheader noch drin ist sorgt der sicher
für einen netten Knackser am Anfang ;)


Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist ne Appnote für ADPCM Encoder-Decoder in C.

http://ww1.microchip.com/downloads/en/AppNotes/00643.zip

Autor: Andreas Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein extrem resourcenschonender Sprachsynthesizer:

http://espeak.sourceforge.net/

"Compact size. The program and its data, including several languages, 
totals about 700 kbytes."

Ist wohl auch ein Tool dabei um die Phoneme zu erstellen.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Andreas Jakob: "...totals about 700 kbytes..."

Hmmm... der SAM auf dem C64 war ca. 10kB groß und sprach englisch 
durchaus verständlich. :) Allerdings dürften dafür keine Quellen 
verfügbar sein und disassemblieren will ich den nun auch wieder nicht...

Gruß aus Berlin
Michael

Autor: Andreas Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab grad dieses PIC-Projekt gefunden. Spielt die gesampelten Phoneme
des legendären SP0256 Sprachsynthesizer aus zwei 32K EEPROMs ab :

http://home.alphalink.com.au/~derekw/pictalker/main.htm

Im Download ist eine Datei allphones.bin mit den Samples
und in der tables.asm stehen die Startadressen im EEPROM
Damit lässt sich bestimmt leicht auf dem AVR eine Sprachausgabe
realisieren, auch wenn sich die Ausgabe vermutlich grausam anhört :-)

Autor: slime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir wer verraten wie ich ein Soundfile in das richtige Format für 
den MegaLOL wandele? Meine bisherigen Versuche mit sox hören sich leider 
alle grausig an. ;)

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry das ich den Thread mal ausgrabe ich wollte aber für eine kleine 
Frage nicht extra einen neuen Aufmachen.

Beim Schaltbild des Megalol wird direkt an den Portpin an dem die 
Ausgabe erfolgt ein 1uF Kondensator gegen masse angebracht.
Für was ist der gut, bzw welchen genauen Zweck hat der?
Da der Portpin ja dauernd mit der PWM beaufschlagt wird, wird dieser 
nicht überlastet da er den Kondensator immer umladen muß?

Sorry für die Blöden Fragen, aber ich bin noch anfänger in dieser Sache. 
:)

Andy

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mir die Schaltung nicht angeschaut und bin mir auhc nicht ganz 
sicher: Aber theoretisch ist das ein Tiefpass, um die PWM Frequenz zu 
filtern. Der Output Pin hat ja einen gewissen Widerstand, die 1µF 
ergeben auch nen Widerstand von 1/(2*Pi*8000*1*10^-6) = 20 Ohm, was 
relativ gut funktionieren sollte. Da der Portpin nicht genug Strom 
liefern kann, fallen die Spikes der PWM raus. Trotzdem folgt die 
Kondensatorspannung der niederfrequenteren NF -> dem Audiosignal.

Autor: Norbert S. (pianoforte)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe es mal auf einen Atmega328P portiert.
Und es läuft.
Aber der halbe Flash des Atmega328P ist voll.

auf dem Arduino UNO geht es auch.

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Möglichkeit, viel Sprache auf einen MC zu bekommen hat mich auch 
schon länger interessiert.
Kompressionsverfahren wie sie in Handies verwendet werden, kommen auf 
ca. 2400Bit/sec. ( Stichwort LPC-Vocoder ).
Die Leistung der AVR ist meines Erachtens für einen AVR etwas zu knapp.

https://de.wikipedia.org/wiki/Vocoder

Autor: chris_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch das passende Video zum Vocoder:
Youtube-Video "Vocoder"

Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> Die Leistung der AVR ist meines Erachtens für einen AVR etwas zu knapp.

Seltsame Aussage. Du hast doch bestimmt was anderes gemeint, oder?
Ich könnte mir vorstellen, das sollte heißen "...für einen Vocoder etwas 
zu knapp", stimmt's? :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.